Dim xlApp
Dim xlBook
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open("C:\Tester.xls", 0, True) 'abre el archivo que contiene la macro.
xlApp.Run "Sample"
xlBook.Close
xlApp.Quit
Set xlBook = Nothing
Set xlApp = Nothing
Se pega este texto en notepad y se guarda con la extension VBSPáginas
lunes, 17 de febrero de 2014
VBA: Script para abrir excel y ejecutar una macro.
fuente
Luego de eso vamos a Inicio, todos los programas, accesorios, herramientas de sistema, tareas programadas. Y programamos la ejecucion de este script.
Suscribirse a:
Enviar comentarios (Atom)
Cual seria el procedimiento para hacer exactamente lo mismo pero en una macros de outlook?
ResponderEliminar¿Como ejecuto la macro con parámetros definidos?
ResponderEliminarEn mi vbs abro varios archivos excel y ejecuto las macros de todos los excels. El problema es que a todas las macros le debo enviar parametros de mes y semana (variable).
Dentro del vbs genero un inputbox preguntando mes y semana. Estas son las variables que debo enviar
Agradezco de antemano tu respuesta y disposición.
Saludos. Federico
Hola Federico,
EliminarSolo necesitarías agregar los parámetros separados por comas, así:
xlApp.Run "TuMacro", "Argumento1", "Argumento2"
Si tus argumentos son enteros, no uses comillas:
xlApp.Run "TuMacro", 35,57
Buenas Tardes Ruben, como te va?
ResponderEliminarme funciono tu codigo haciendo algunas modificaciones, ahora mi consulta seria, como puedo hacer para poder que excel me abra en primer plano y que el foco estee en el?, la verdad que no lo consigo.
codigo que he mejorado del tuyo
Dim xlApp
Dim xlBook
Set objShell = CreateObject("WScript.Shell")
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open("C:\Users\hola\Desktop\prueba_excel.xlsm", 0, false)
xlApp.Visible = true
xlApp.EnableEvents = True
WScript.Sleep 3000
objShell.SendKeys "%{F4}"
objShell.SendKeys "%{D}"
objShell.SendKeys "%{K}"
objShell.SendKeys "%{T}"
rem objShell.SendKeys "%{D}+%{K}+%{T}"
WScript.Sleep 4000
xlApp.Run "Sample"
WScript.Sleep 4000
objShell.SendKeys "%{A}+%{D}"
xlBook.Save
xlBook.Close
xlApp.Quit
WScript.Quit
Set xlBook = Nothing
Set xlApp = Nothing
Estimado Ruben,
ResponderEliminarCuando corro el script me sale el excel como solo lectura, y como la macro es extensa me sale que el excel no responde, crees que el motivo sea porque sale solo lectura?
Estaré atento a tus comentarios, gracias.
Cambiale el nombre y guárdalo con la extensión xlsm, debería funcionar.
EliminarLo que sucede es que es un archivo xlsb, mi duda es que abre el archivo pero sale solo lectura. Una pregunta que significa el 0 en tu código
EliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarQue mas amigo Ruben, como va todo,
ResponderEliminartengo la siguiente consulta, he creado un script desde Sap, pero necesito traer unos datos desde excel ,
los datos que quiero que me los tome desde la tabla de excel son ; el 2100 , el 3001010020 y el 53.
session.findById("wnd[0]/usr/ctxtQL_WERKS-LOW").text = "2100"
session.findById("wnd[0]/usr/ctxtQL_MATNR-LOW").text = "3001010020"
session.findById("wnd[0]/usr/tabsUD_DATA/tabpBB/ssubSUB_UD_DATA:SAPMQEVA:0102/txtRQEVA-VMENGE01").text = "53"
Este el el VBScript (.vbs) que grabe desde sap ;
If Not IsObject(application) Then
Set SapGuiAuto = GetObject("SAPGUI")
Set application = SapGuiAuto.GetScriptingEngine
End If
If Not IsObject(connection) Then
Set connection = application.Children(0)
End If
If Not IsObject(session) Then
Set session = connection.Children(0)
End If
If IsObject(WScript) Then
WScript.ConnectObject session, "on"
WScript.ConnectObject application, "on"
End If
session.findById("wnd[0]").maximize
session.findById("wnd[0]/tbar[0]/okcd").text = "/nqa32"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/ctxtQL_ENSTD-LOW").text = ""
session.findById("wnd[0]/usr/ctxtQL_ENSTD-HIGH").text = ""
session.findById("wnd[0]/usr/ctxtQL_WERKS-LOW").text = "2100"
session.findById("wnd[0]/usr/ctxtQL_MATNR-LOW").text = "3001010020"
session.findById("wnd[0]/usr/ctxtQL_MATNR-LOW").setFocus
session.findById("wnd[0]/usr/ctxtQL_MATNR-LOW").caretPosition = 10
session.findById("wnd[0]/tbar[1]/btn[8]").press
session.findById("wnd[0]/usr/cntlGRID1/shellcont/shell").currentCellColumn = ""
session.findById("wnd[0]/usr/cntlGRID1/shellcont/shell").selectedRows = "0"
session.findById("wnd[0]/tbar[1]/btn[41]").press
session.findById("wnd[0]/usr/tabsUD_DATA/tabpBB").select
session.findById("wnd[0]/usr/tabsUD_DATA/tabpBB/ssubSUB_UD_DATA:SAPMQEVA:0102/txtRQEVA-VMENGE01").text = "53"
session.findById("wnd[0]/usr/tabsUD_DATA/tabpBB/ssubSUB_UD_DATA:SAPMQEVA:0102/txtRQEVA-VMENGE01").caretPosition = 2
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/tabsUD_DATA/tabpFEHL").select
session.findById("wnd[0]/usr/tabsUD_DATA/tabpFEHL/ssubSUB_UD_DATA:SAPMQEVA:0103/subUD_DATA:SAPMQEVA:1103/ctxtRQEVA-VCODE").setFocus
session.findById("wnd[0]/usr/tabsUD_DATA/tabpFEHL/ssubSUB_UD_DATA:SAPMQEVA:0103/subUD_DATA:SAPMQEVA:1103/ctxtRQEVA-VCODE").caretPosition = 0
session.findById("wnd[0]").sendVKey 4
session.findById("wnd[1]/usr/btnSPOP-OPTION1").press
session.findById("wnd[1]/usr/cntlTREE_CONTROL_AREA/shellcont/shell").selectItem " 3","1"
session.findById("wnd[1]/usr/cntlTREE_CONTROL_AREA/shellcont/shell").ensureVisibleHorizontalItem " 3","1"
session.findById("wnd[1]/usr/cntlTREE_CONTROL_AREA/shellcont/shell").doubleClickItem " 3","1"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/tbar[0]/btn[11]").press
session.findById("wnd[0]/tbar[1]/btn[14]").press
cabe anotar que la idea es que el vbs se repita hasta terminar las lineas del excel.
un abrazo!
Buenas tardes. necesito guardar en una carpeta los adjuntos recibidos y cambiarle el nombre por el del asunto del mensaje.
ResponderEliminarPublic Sub saveAttachtoDisk (itm As Outlook.MailItem)
Dim objAtt As Outlook.Attachment
Dim saveFolder As String
saveFolder = "C:Archivos"
For Each objAtt In itm.Attachments
objAtt.SaveAsFile saveFolder & "" & objAtt.DisplayName
Set objAtt = Nothing
Next
End Sub
esto hace todo pero no me cambia el nombre del adjunto, no se como seguir Ayuda