從 vbscript 檔案執行 Excel 巨集 (vba)

從 vbscript 檔案執行 Excel 巨集 (vba)

我有一個 vbs 文件,它從資料庫中提取資訊並將資料匯出到 Excel 文件 (C:\file.csv)。完成此操作後,我運行一系列巨集 (vba) 來格式化該資料。這些巨集始終相同,我通常將它們從文字檔案複製/貼上到電子表格中,然後手動運行它們。

有沒有辦法將巨集 vba 包含到 vbs 檔案中,以便在將資料匯出到電子表格後執行巨集?類似的解決方案展示如何稱呼Excel 檔案中的預定義宏,我希望在 vbs 檔案中儲存/執行巨集的內容。這將很有幫助,因為 vbs 正在建立一個全新的文件,然後將執行格式化巨集。

我的想法是我需要使用Set objWorkbook = objExcel.Workbooks.Open("C:\file.csv")

答案1

你走在正確的軌道上。您首先需要的是使用後期綁定為 Excel.Application 設定一個新變數。所有普通的 Excel VBA 功能都隱藏在該物件下。下面是一個範例 vbs 腳本,它將開啟一個新工作簿,新增一個新工作表,將其命名為“TEST”,然後將一些內容新增到A1該新工作表的儲存格中。完成後,vbs 將回顯“Finished”

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 中編寫巨集一樣有效。

答案2

前段時間我嘗試過這個其他幾個 蘇回答。我發現的唯一方法是使用 PowerShell 而不是 VBScript。 PowerShell 可以執行每個 VBA 指令。僅語法不同。

作為 PowerShell 腳本的 VBA 範例

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

答案3

我會將巨集放入 Excel 範本中。然後,我將在範本中建立一個自動新巨集以匯入 csv 檔案並執行格式化巨集。

然後我將使用 vbs 創建並保存 csv 檔案並根據模板開啟 Excel 文件。

相關內容