コマンド ラインから Excel マクロを起動することはできますか?
イベントを使用せずWorksheet_Open
、Excel ファイルを開くだけです。
Excel ワークブックに存在する特定のマクロを起動する必要があります。
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
てウィンドウを表示することができます。
最後に 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
AutoItは優れた COM サポートも提供し、組み込みの Excel 制御関数が多数あります。スクリプトを .EXE にコンパイルし、コマンド ラインから実行できます。
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;
}
}