是否可以从外部命令在Excel中运行宏?

时间:2010-07-06 03:08:20

标签: vba excel-vba excel

假设我想在外部程序中编写VBA代码,该程序打开Excel文件,运行宏,保存(并对任何弹出窗口说“是”),然后关闭Excel。有可能这样做吗?如果是这样,我将如何实施呢?

3 个答案:

答案 0 :(得分:4)

您可以启动Excel,打开工作簿,然后从VBScript文件中操作工作簿。

将以下代码复制到记事本中。

更新'MyWorkbook.xls'和'Sheet1'参数。

使用vbs扩展名保存并运行它。

Option Explicit

On Error Resume Next

ExcelMacroExample

Sub ExcelMacroExample() 

  Dim xlApp 
  Dim xlBook 

  Set xlApp = CreateObject("Excel.Application") 
  Set xlBook = xlApp.Workbooks.Open("C:\MyWorkbook.xls") 
  xlBook.Sheets("Sheet1").Cells(1, 1).Value = "My text"
  xlBook.Sheets("Sheet1").Cells(1, 1).Font.Bold = TRUE
  xlBook.Sheets("Sheet1").Cells(1, 1).Interior.ColorIndex = 6
  xlBook.Save
  xlBook.Close
  xlApp.Quit 

  Set xlBook = Nothing 
  Set xlApp = Nothing 

End Sub 

上面的代码启动Excel打开工作簿,在单元格A1中输入一个值,使其变为粗体并更改单元格的颜色。然后保存并关闭工作簿。然后关闭Excel。

答案 1 :(得分:0)

根据您要实现的目标,您还可以通过(OLE)自动化从另一个应用程序(如Access或Word)或从您在Visual Basic(6)等其他环境中编写的应用程序中“控制”Excel。也可以通过.Net使用您选择的语言实现这一点(尽管有些语言比其他语言更容易实现)。

您是想从外部应用程序控制Excel还是只是从外部触发现有工作簿中的VBA宏?

同样,根据您的意图,工作簿可能有一个自动打开宏,可以根据外部值(例如ini文件或数据库值)进行条件运行。

答案 2 :(得分:0)

我可以想到几种方法来做到这一点。

You can start excel by creating a file with NotePad or a similar text editor.

Here are some steps:

    Launch NotePad
    Add the following line of text. Replace test.xlsm with the name and path for your file:
    start Excel.exe "C\test.xlsm"
    Save the file as "Test.bat". 
    Run the batch file.
    The batch file should launch Excel and then open your file. The code in your workbook should run

OR

再次使用记事本。

Option Explicit

On Error Resume Next

ExcelMacroExample

Sub ExcelMacroExample() 

  Dim xlApp 
  Dim xlBook 

  Set xlApp = CreateObject("Excel.Application") 
  Set xlBook = xlApp.Workbooks.Open("C:\MyWorkbook.xls", 0, True) 
  xlApp.Run "MyMacro"
  xlApp.Quit 

  Set xlBook = Nothing 
  Set xlApp = Nothing 

End Sub

或者,这个。

'Code should be placed in a .vbs file
Set objExcel = CreateObject("Excel.Application")
objExcel.Application.Run "'C:\Users\Ryan\Desktop\Sales.xlsm'!SalesModule.SalesTotal"
objExcel.DisplayAlerts = False
objExcel.Application.Quit
Set objExcel = Nothing

现在,这不是'外部命令',但Windows任务计划程序将为您打开该文件做得很好,一旦打开,您可以运行一个像下面看到的小脚本

Private Sub Workbook_Open()
   Call CommandButton1_Click
End Sub

https://www.sevenforums.com/tutorials/11949-elevated-program-shortcut-without-uac-prompt-create.html