Можно ли запустить макрос в 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