我有一个 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
答案3
我会将宏放入 excel 模板中。然后在模板中创建一个自动新建宏来导入 csv 文件并运行格式化宏。
然后我将让 vbs 创建并保存 csv 文件并根据模板打开 excel 文件。