繁体   English   中英

从任务计划程序/SQL Server JOB 运行 Excel 宏

[英]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

这就是我所做的:

  1. 打开 Excel 工作簿
  2. 按 Alt+F11 打开 VBA 编辑器
  3. 在 Project Explorer 中双击 ThisWorkbook
  4. 复制下面的代码并粘贴到代码窗口中
  5. 更改文件夹位置
  6. 将文件另存为启用宏的工作簿
  7. 打开工作簿进行测试,它将自动运行宏。

     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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM