我有一个VBA模块和一个VBScript,可以将该模块导入到特定的Excel工作簿中。我面临的问题是,当使用其他机器时,模块的路径将改变。有没有办法将BAS文件与脚本文件打包在一起?还是将BAS包含在实际的VBScript文件中?
理想情况下,最终产品将是单个文件,可以将Vbscript和BAS文件一起发送(可能是压缩文件),但我更喜欢一个文件可交付使用。不幸的是,将VBA模块转换为VBS并不是真正的选择,因为我特别需要一些VBA功能。
当前可运行但不理想的代码:
'Target Excel file to import BAS file to
Filepath = "C:\targetExcelFile.xlsx"
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open(filepath)
objExcel.Visible = True
'Imports BAS module, but using a filepath
objExcel.VBE.ActiveVBProject.VBComponents.Import pathToBASfile
objExcel.Run "MySub"
答案 0 :(得分:0)
VBS文件是否总是放在xlxs附近?如果是这样,您可以执行以下操作:
'Target Excel file to import BAS file to
Set Fso = WScript.CreateObject("Scripting.FileSystemObject")
ParentFolder = FSO.GetParentFolderName(WScript.ScriptFullName)
sParentFolder = ParentFolder & "\"
Filepath = sParentFolder & "targetExcelFile.xlsx"
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open(filepath)
objExcel.Visible = True
'Imports BAS module, but using a filepath
objExcel.VBE.ActiveVBProject.VBComponents.Import pathToBASfile
objExcel.Run "MySub"
这将获取执行脚本的当前文件夹,如果该文件位于该文件附近,它将始终运行。