我将数据从一个工作簿复制到另一个工作簿,然后运行所复制工作簿中的宏。下面的VBA代码可以正常运行。
VBA代码
现在,我正在尝试将以下的
Sub test()
Dim x As Workbook
Dim y As Workbook
Set x = Workbooks.Open("D:\mywork\work_data.xlsx")
Set y = Workbooks.Open("D:\mywork\other_work_data.xlsm")
x.Sheets("myworksheet").UsedRange.Copy
y.Sheets("Sheet1").Range("A1").PasteSpecial
y.Save
x.Close
Application.Run ("other_work_data.xlsm!checkDate")
y.Close
End Sub
现在,我正在尝试将以下的
vba
代码改为vbscript
,但是它对我不起作用。
VBScript代码
Sub test()
Dim ExcelApp
Dim x
Dim y
Set ExcelApp = CreateObject("Excel.Application")
Set x = ExcelApp.Workbooks.Open("D:\mywork\work_data.xlsx")
Set y = ExcelApp.Workbooks.Open("D:\mywork\other_work_data.xlsm")
x.Sheets("myworksheet").UsedRange.Copy
y.Sheets("Sheet1").Range("A1").PasteSpecial
y.Save
x.Close
ExcelApp.Application.Run ("other_work_data.xlsm!checkDate")
y.Close
ExcelApp.DisplayAlerts = False
ExcelApp.Application.Quit
Set ExcelApp = Nothing
End Sub
由于我对vba
和vbscript
还很陌生,有谁能告诉我我做错了什么吗?我已经在stackoverflow上看过类似的问题,但是我没有解决问题。
ExcelApp
引用后面,你需要额外的Application
语句吗?ExcelApp
已经被设置为一个应用程序。尝试从ExcelApp.Application.Run ("other_work_data.xlsm!checkDate")
和ExcelApp.Application.Quit
中删除Application
。 - Jordan.copy
之前,你可以添加ExcelApp.visible = true
以查看是否正在打开 Excel。你可以添加一些MsgBox "stop to check"
来停止操作并检查宏的这个阶段是否顺利进行。或者在中间某个地方暂时加入Exit sub
来测试临时处理结果。 - Kazimierz Jawor