Ho scritto una parte di codice in SAS EG che apre semplicemente una cartella di lavoro di Excel. La cartella di lavoro di Excel contiene il codice VBA che viene eseguito sull'evento "Workbook Open". Tutto il codice fa molto bene, aggiorna tutte le connessioni dati la prima volta che viene aperto tutti i giorni.Esecuzione di SAS Enterprise Guide Job su Windows Server
Quando si esegue manualmente il programma SAS, funziona esattamente come pianificato. Apre il file Excel che a sua volta attiva la macro VBA. Quando pianifico il lavoro SAS EG sul mio server, tuttavia, il lavoro viene eseguito ma non accade nulla al mio file Excel. Inoltre, non viene presentato alcun errore nel mio codice SAS o nel mio registro di pianificazione di Windows.
Ecco il mio codice SAS:
options noxwait noxsync;
x '"C:\Program Files\Microsoft Office\Office15\excel.exe" "\\route\to\file\excel_macro_playground.xlsm"';
run;
Ecco il mio 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
E poi, naturalmente, a utilizzare lo strumento di pianificazione SAS EG per impostare il lavoro. Tutti i miei altri lavori stanno andando bene. C'è qualcosa che devo cambiare perché funzioni come previsto?
Hai provato questo: http://stackoverflow.com/questions/2050505/way-to-run-excel-macros-from-command-line-or-batch-file o questo: http: // stackoverflow .com/domande/10881951/how-to-launch-un-excel-macro-da-riga di comando, senza-foglio-open-evento? – Ralph
@ Ralph Sono riuscito a farlo bene. Per qualche motivo quando eseguo il codice SAS da Base SAS anziché da EG, funziona. Grazie comunque – Herm
Non pensavo che DDE funzionasse in un server o in un ambiente non interattivo, dal momento che sta utilizzando la tua sessione interattiva. – Joe