Her*_*nHH 5 excel vba sas excel-vba enterprise-guide
我在SAS EG中编写了一段代码,只是打开一个Excel工作簿.Excel工作簿包含在"工作簿打开"事件上执行的VBA代码.所有代码都是如此,它是在每天第一次打开时刷新所有数据连接.
当我手动运行SAS程序时,它完全按计划运行.它打开Excel文件,然后触发VBA宏.但是,当我在我的服务器上安排SAS EG作业时,作业运行但我的Excel文件没有任何反应.我的SAS代码或My Windows Scheduler日志中也没有出现任何错误.
这是我的SAS代码:
options noxwait noxsync;
x '"C:\Program Files\Microsoft Office\Office15\excel.exe" "\\route\to\file\excel_macro_playground.xlsm"';
run;
Run Code Online (Sandbox Code Playgroud)
这是我的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
Run Code Online (Sandbox Code Playgroud)
当然,我使用SAS EG Scheduling工具来设置工作.我所有的其他工作都运行得很好.我需要改变一些东西,以便按预期工作吗?
小智 1
我同意 Joe 对 DDE 的评论,即它不起作用,但是您通过 X 命令所做的是进行系统调用,就好像它在命令行上一样,而不是 DDE。如果要调试系统调用,请尝试使用 FileName Pipe 语法来查看 SAS 日志中的命令输出。
就你而言...
FileName myCall Pipe '"C:\Program Files\Microsoft Office\Office15\excel.exe" "\\route\to\file\excel_macro_playground.xlsm"';
Data _NULL_;
InFile myCall length=lineLength;
Input line $varying256. lineLength;
Put line;
Run;
Run Code Online (Sandbox Code Playgroud)
我还刚刚注意到您的 .xslm 示例路径使用“\\”,如果实际路径像这样开始,那么这可能是您的问题。您不能在像这样的标准系统调用中使用 UNC 路径(某些命令行程序允许它们)。您需要首先映射文件服务器并共享到驱动器。如果是这种情况,请告诉我,如果您需要,我可以帮助您。