5

Excelワークブックを開くだけのコードをSAS EGで作成しました。Excel ワークブックには、「ワークブックを開く」イベントで実行される VBA コードが含まれています。ほとんどすべてのコードは、毎日最初に開いたときにすべてのデータ接続を更新するだけです。

SAS プログラムを手動で実行すると、計画どおりに動作します。VBA マクロをトリガーする Excel ファイルを開きます。サーバーで 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;

これが私の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 ツールを使用してジョブをセットアップします。私の他の仕事はすべてうまくいっています。これが期待どおりに機能するために変更する必要があるものはありますか?

4

1 に答える 1

1

DDE が機能しないという Joe のコメントには同意しますが、X コマンドを使用して行うことは、DDE ではなく、コマンド ライン上にあるかのようにシステム コールを行うことです。システム コールをデバッグする場合は、FileName パイプ構文を使用して、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;

また、.x​​slm へのパスの例が「\\」を使用していることにも気付きました。実際のパスがこのように始まる場合、それが問題である可能性があります。このような標準システム コールでは UNC パスを使用できません (一部のコマンド ライン プログラムでは使用できます)。最初にファイル サーバーと共有をドライブにマップする必要があります。必要に応じてお手伝いできる場合はお知らせください。

于 2016-08-11T11:04:09.030 に答える