Запуск макросов excel (vba) из файла vbscript

У меня есть файл vbs, который извлекает информацию из моей базы данных и экспортирует данные в файл Excel (C:file.csv). Как только это будет сделано, я запускаю серию макросов (vba) для форматирования этих данных. Эти макросы всегда одинаковы, я обычно копирую/вставляю их из текстового файла в электронную таблицу, а затем вручную запускаю их.

есть ли способ включить макрос vba в файл vbs, чтобы после экспорта данных в электронную таблицу запускались макросы? похожие решения показать как вызов предопределенный макрос в файле Excel, где я хочу, чтобы содержимое макроса было сохранено/выполнено в / из моего файла vbs. Это будет полезно, поскольку vbs создает новый файл, а затем запускает макросы форматирования.

Я думаю, что мне нужно использовать Set objWorkbook = objExcel.Workbooks.Open("C:file.csv")

16
задан Community
26.03.2023 8:23 Количество просмотров материала 2900
Распечатать страницу

3 ответа

вы на правильном пути. Сначала необходимо настроить новую переменную для Excel.Применение с использованием позднего связывания. Именно под этим объектом скрываются все обычные вкусности excel VBA. Ниже приведен пример сценария vbs, который откроет новую книгу, добавит новый лист, назовет его "тест" и добавит некоторое содержимое в ячейку A1 новый лист. Когда это будет сделано, vbs будет эхом "готово"

Sub createWB()

  'Set the excel application variable
  set xlApp = CreateObject("Excel.Application")

  'Make it visible, or hide it in the background
  xlApp.Application.Visible = true

  'Open a new workbook, for instance
  set xlWB = xlApp.Workbooks.Add()
  xlWB.Activate

  'Add a sheet, name it test, bring it front and center
  set xlSheet = xlWB.Worksheets.Add()
  xlSheet.Name = "TEST"
  xlSheet.Activate

  'Put something in cell A1
  xlSheet.Cells(1,1).value = "TEST CELL CONTENT"

End Sub

'Call the subroutine above
call createWB

WScript.Echo "Finished."
WScript.Quit

вам, возможно, придется немного обезьянничать с вашим существующим кодом VBA, чтобы сделать vbs счастлив, но вы обнаружите, что написание макросов в vbs так же функционально, как и написание их в vba.

1
отвечен JNevill 2023-03-27 16:11

некоторое время назад я пробовал это для несколько другое ответы СУ. Единственный способ, который я нашел, - использовать PowerShell вместо VBScript. PowerShell может выполнять все команды VBA. Только синтаксис can отличаются.

ваш пример VBA как сценарий PowerShell

$excel = New-Object -ComObject excel.application 
$workbook = $excel.Workbooks.Open("C:\file.csv")
$excel.visible = $true
0
отвечен nixda 2023-03-27 18:28

Я бы поместил макросы в шаблон excel. Затем я бы создал макрос autonew в шаблоне, чтобы импортировать файл csv и запустить макросы форматирования.

тогда я хотел бы получить vbs, чтобы создать и сохранить файл csv и открыть файл excel на основе шаблона.

-1
отвечен David Grugeon 2023-03-27 20:45

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх