我在 SAS EG 中编写了一段代码,它只是打开了一个 Excel 工作簿。Excel 工作簿包含在“工作簿打开”事件时执行的 VBA 代码。所有的代码几乎都是这样做的,它每天第一次打开时都会刷新所有数据连接。
当我手动运行 SAS 程序时,它完全按计划运行。它打开反过来触发 VBA 宏的 Excel 文件。但是,当我在我的服务器上安排 SAS EG 作业时,作业运行但我的 Excel 文件没有任何反应。我的 SAS 代码或我的 Windows 调度程序日志中也没有出现任何错误。
这是我的 SAS 代码:
options noxwait noxsync;
x '"C:\Program Files\Microsoft Office\Office15\excel.exe" "\\route\to\file\excel_macro_playground.xlsm"';
run;
这是我的VBA:
Private Sub Workbook_Open()
Dim wsSheet As Worksheet
On Error Resume Next
Set wsSheet = Sheets("book_helper")
On Error GoTo 0
If wsSheet Is Nothing Then
Sheets.Add.Name = "book_helper"
ActiveWorkbook.RefreshAll
Sheets("book_helper").Range("A1").Value = Date
Sheets("book_helper").Visible = xlVeryHidden
Application.DisplayAlerts = False
ThisWorkbook.Save
Application.DisplayAlerts = True
Application.Quit
Else
If Sheets("book_helper").Range("A1").Value < Date Or Sheets("book_helper").Range("A1").Value = "" Then
ActiveWorkbook.RefreshAll
Sheets("book_helper").Range("A1").Value = Date
Sheets("book_helper").Visible = xlVeryHidden
'ActiveWorkbook.Close savechanges:=True
'Application.Quit
Application.DisplayAlerts = False
ThisWorkbook.Save
Application.DisplayAlerts = True
Application.Quit
End If
End If
End Sub
然后我当然会使用 SAS EG Scheduling 工具来设置作业。我所有的其他工作都运行良好。是否需要更改某些内容才能使其按预期工作?