[英]SSIS : Execute SQL Server Agent Job Task run Asychronously or Synchronously
[英]Run Excel Macro from Task Scheduler / SQL Server JOB
我有一个 Excel 宏,当我在 Excel 中运行它时,它可以工作,但我想从任务计划程序或 SQL 服务器作业(我猜是使用 cscript)运行这个宏。 我有以下 VBS:
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
如何从任务计划程序/SQL Server 代理运行它? 它需要先以某种方式打开 Excel。 我应该在代码中添加什么来做到这一点?
感谢您的建议@paul
这就是我所做的:
打开工作簿进行测试,它将自动运行宏。
Private Sub Workbook_Open() 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("O:\\DATA\\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 End Sub
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.