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

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

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

3 ответа3

1

Ты на правильном пути. Сначала вам нужно настроить новую переменную для Excel.Приложение с использованием позднего связывания. Именно под этим объектом скрываются все нормальные вкусности VBA Excel. Ниже приведен пример сценария 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.

0

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

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

$excel = New-Object -ComObject excel.application 
$workbook = $excel.Workbooks.Open("C:\file.csv")
$excel.visible = $true
-1

Я бы поместил макросы в шаблон Excel. Затем я создал бы новый макрос в шаблоне для импорта файла CSV и запуска макросов форматирования.

Тогда я бы получил VBS для создания и сохранения файла CSV и открыть файл Excel на основе шаблона.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .