Можно ли запустить макрос в Excel из внешней команды?

Допустим, я хочу запрограммировать код VBA во внешней программе, которая открывает файл Excel, запускает макрос, сохраняет (и говорит "да" во всех всплывающих окнах) и закрывает Excel. Возможно ли это сделать? Если так, то как бы я это реализовал?

3 ответа

Вы можете запустить 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 затем закрывается.

В зависимости от того, чего вы пытаетесь достичь, вы также можете "контролировать" Excel через (OLE) Automation из другого приложения, такого как Access или Word, или из вашего собственного приложения, написанного в другой среде, такой как Visual Basic (6). Этого также можно достичь с помощью.Net, используя язык по вашему выбору (хотя некоторые легче реализовать, чем другие).

Вы хотите управлять Excel из внешнего приложения или просто запускать макрос VBA в существующей книге извне?

Опять же, в зависимости от вашего намерения, рабочая книга может иметь макрос Auto Open, который может быть условно выполнен на основе внешнего значения (например, файла ini или значения базы данных).

Я могу придумать несколько способов сделать это.

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

ИЛИ ЖЕ

Опять же, используя Блокнот.

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

Другие вопросы по тегам