从 vbscript 文件运行 excel 宏 (vba)

从 vbscript 文件运行 excel 宏 (vba)

我有一个 vbs 文件,它从我的数据库中提取信息并将数据导出到 Excel 文件 (C:\file.csv)。完成后,我会运行一系列宏 (vba) 来格式化这些数据。这些宏总是相同的,我通常将它们从文本文件复制/粘贴到电子表格中,然后手动运行它们。

有没有办法将宏 vba 包含到 vbs 文件中,以便在数据导出到电子表格后,宏可以运行?类似解决方案演示如何称呼Excel 文件中的预定义宏,我希望将宏的内容保存到我的 vbs 文件中/从我的 vbs 文件中执行。这将很有用,因为 vbs 正在创建一个全新的文件,然后运行格式化宏。

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

答案1

您走在正确的轨道上。您首先需要使用后期绑定为 Excel.Application 设置一个新变量。所有正常的 Excel VBA 功能都隐藏在该对象下。下面是一个示例 vbs 脚本,它将打开一个新工作簿,添加一个新工作表,将其命名为“TEST”,并在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 中编写宏一样有效。

答案2

前段时间我尝试过这个其他几个 SU 解答。我发现的唯一方法是使用 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 文件。

相关内容