Tôi đã viết một đoạn mã trong SAS EG chỉ đơn giản là mở một sổ làm việc Excel. Sổ làm việc Excel chứa mã VBA được thực thi khi sự kiện "Mở sổ làm việc". Tất cả các mã khá nhiều hiện, là nó làm mới tất cả các kết nối dữ liệu lần đầu tiên nó được mở ra mỗi ngày.Chạy SAS Enterprise Guide Công việc trên windows Server
Khi tôi chạy chương trình SAS theo cách thủ công, nó hoạt động chính xác như được lên kế hoạch. Nó mở tập tin Excel mà lần lượt kích hoạt VBA Macro. Tuy nhiên, khi tôi lên lịch cho công việc SAS EG trên Máy chủ của mình, Lệnh in sẽ chạy nhưng không có gì xảy ra với tệp Excel của tôi. Tôi cũng không gặp phải bất kỳ lỗi nào trong mã SAS của tôi hoặc trên Nhật ký Trình lập lịch biểu của tôi.
Đây là mã SAS của tôi:
options noxwait noxsync;
x '"C:\Program Files\Microsoft Office\Office15\excel.exe" "\\route\to\file\excel_macro_playground.xlsm"';
run;
Đây là VBA của tôi:
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
Và sau đó tất nhiên tôi sử dụng công cụ Scheduling SAS EG để thiết lập công việc. Tất cả các công việc khác của tôi đều chạy tốt. Có điều gì tôi cần phải thay đổi để điều này có hiệu quả như mong đợi không?
Bạn đã thử điều này: http://stackoverflow.com/questions/2050505/way-to-run-excel-macros-from-command-line-or-batch-file hoặc điều này: http: // stackoverflow .com/questions/10881951/how-to-launch-an-excel-macro-từ-command-line-without-worksheet-open-event? – Ralph
@Ralph Tôi đã cố gắng làm đúng. Đối với một số lý do khi tôi chạy mã SAS từ Base SAS thay vì EG, nó hoạt động. Cảm ơn anyway – Herm
Tôi không nghĩ rằng DDE làm việc trong một môi trường máy chủ hoặc không tương tác, vì nó sử dụng phiên tương tác của bạn. – Joe