Ich habe ein Excel-Makro, das funktioniert, wenn ich es in Excel ausführen, aber ich möchte dieses Makro aus Task-Scheduler oder einem SQL-Server-Job (mit Cscript ich denke). Ich habe folgende VBS:Ausführen von Excel-Makro aus Taskplaner/SQL Server JOB
Sub RefreshAllExcelInFolder()
Dim fso
Dim ObjFolder
Dim ObjFiles
Dim ObjFile
Dim objExcel
'Creating File System Object
Set fso = CreateObject("Scripting.FileSystemObject")
'Getting the Folder Object
Set ObjFolder = fso.GetFolder("D:\Source Files\")
'Getting the list of Files
Set ObjFiles = ObjFolder.Files
'On Error Resume Next
For Each ObjFile In ObjFiles
If LCase(Right(ObjFile.Name, 5)) = ".xlsx" Or LCase(Right(ObjFile.Name, 4)) = ".xls" Then
Workbooks.Open(ObjFile).Activate
RefreshAllData
End If
Next
End Sub
Sub RefreshAllData()
ActiveWorkbook.RefreshAll
ActiveWorkbook.Save
ActiveWorkbook.Close
''''''''MsgBox ("Going back In")
End Sub
Wie kann ich dies vom Taskplaner/SQL Server Agent ausführen? Es muss Excel zuerst irgendwie öffnen. Was sollte ich dem Code hinzufügen, um das zu tun?
Sorry - ich die Frage den ganzen Weg bis zum Ende lesen müssen, um wirklich, anstatt stoppe sobald ich die Probleme im Code sehe. 'Setzen Sie objExcel = CreateObject (" Excel.Application ")' und stellen Sie dann sicher, dass alle Verweise auf Objekte, die Teil der Excel-Anwendung sind, qualifiziert sind - z. 'objExcel.ActiveWorkbook'. (Und wahrscheinlich müssen Sie 'objExcel' als Parameter für' RefreshAllData' übergeben, damit auch innerhalb dieser Prozedur darauf zugegriffen werden kann.) – YowE3K
Erstellen Sie eine Excel-Arbeitsmappe mit einem Autorun-Makro, und beginnen Sie dann mit dem Blatt aus der externen Anwendung . –