如何启动命令行的Excel宏(无Worksheet_Open事件)?(How to Launch a

2019-06-25 04:42发布

是否有可能推出的命令行Excel宏?

我不想使用Worksheet_Open事件,只需打开Excel文件。

我需要启动存在于Excel工作簿中特定的宏。

Answer 1:

使用Windows PowerShell中,它具有优异的COM互操作支持。

我有工作簿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使窗口可见。



Answer 2:

最后我用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 


Answer 3:

的AutoIt还提供了巨大的COM支持,并有很多的内置Excel的控制功能。 您可以编写脚本的.EXE,然后在命令行中运行它。



Answer 4:

如果您希望在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;
   }
}


Answer 5:

谢谢! 迈赫迪你的答案有一个小的调整工作对我来说太。 该生产线xl.Application.Visible = True用内存留有开放僵尸/幻EXCEL.EXE进程(发现它通过Windows任务管理器)。 使用xl.Application.Visible = False ,而不是好像消除僵尸。



文章来源: How to Launch an Excel macro from command line (Without Worksheet_Open Event)?
标签: excel vba cmd