Можно ли запустить макрос в Excel из внешней команды? - PullRequest
0 голосов
/ 06 июля 2010

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

Ответы [ 3 ]

4 голосов
/ 06 июля 2010

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

0 голосов
/ 16 августа 2017

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

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

0 голосов
/ 06 июля 2010

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...