10

コマンド ラインから Excel マクロを起動することはできますか?

イベントを使用せずWorksheet_Open、Excel ファイルを開くだけです。

Excel ワークブックに存在する特定のマクロを起動する必要があります。

4

5 に答える 5

14

Windows PowerShell を使用します。優れた COM 相互運用サポートを備えています。

「Test」というマクロを含むワークブック c:\TestBeep.xlsm があります。これは私のトランスクリプトです:

PS C:\> $app = New-Object -comobject Excel.Application
PS C:\> $wb = $app.Workbooks.Open("c:\TestBeep.xlsm")
PS C:\> $wb.Name
TestBeep.xlsm
PS C:\> $app.Run("Test")
PS C:\> $app.Quit()

必要に応じて、追加し$app.Visible = $Trueてウィンドウを表示することができます。

于 2012-06-04T14:02:37.797 に答える
10

最後に VB スクリプトを作成し、コマンド ラインから起動しました。

Option Explicit

    LaunchMacro

    Sub LaunchMacro() 
      Dim xl
      Dim xlBook      
      Dim sCurPath

      sCurPath = CreateObject("Scripting.FileSystemObject").GetAbsolutePathName(".")
      Set xl = CreateObject("Excel.application")
      Set xlBook = xl.Workbooks.Open(sCurPath & "\MyWorkBook.xlsm", 0, True)        
      xl.Application.Visible = True
      xl.Application.run "MyWorkBook.xlsm!MyModule.MyMacro"
      xl.DisplayAlerts = False      
      xlBook.saved = True
      xl.activewindow.close
      xl.Quit

      Set xlBook = Nothing
      Set xl = Nothing

    End Sub 
于 2012-06-05T08:45:46.700 に答える
0

AutoItは優れた COM サポートも提供し、組み込みの Excel 制御関数が多数あります。スクリプトを .EXE にコンパイルし、コマンド ラインから実行できます。

于 2012-06-04T19:23:43.337 に答える
0

C# でコーディングする場合は、このテンプレートを使用してください

void Main()
{
    var oExcelApp = (Microsoft.Office.Interop.Excel.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application");
    try{
        //oExcelApp.Visible = true;
        var WB = oExcelApp.ActiveWorkbook;
        var WS = (Worksheet)WB.ActiveSheet;
        ((string)((Range)WS.Cells[1,1]).Value).Dump("Cell Value");
        oExcelApp.Run("test").Dump("macro");
    }
    finally{
        if(oExcelApp != null)
            System.Runtime.InteropServices.Marshal.ReleaseComObject(oExcelApp);
        oExcelApp = null;
   }
}
于 2014-12-09T20:55:03.920 に答える