我正在将数据从一个工作簿复制到另一工作簿,然后从复制的工作簿运行宏。下面的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
,因此有人可以告诉我我做错了什么吗?我曾在堆栈溢出中经历过类似的问题,但我没有解决问题。
我已经解决了问题。其实,问题很简单。我使用了子例程test()
,却忘记了调用。因此,我曾经使用过Call test()
。
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.Run ("other_work_data.xlsm!checkDate") 'ExcelApp.Run is enough
y.Close
ExcelApp.DisplayAlerts = False
ExcelApp.Quit 'ExcelApp.Quit is enough
Set ExcelApp = Nothing
End Sub
Call 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.Run ("other_work_data.xlsm!checkDate") 'ExcelApp.Run is enough
y.Close
ExcelApp.DisplayAlerts = False
ExcelApp.Quit 'ExcelApp.Quit is enough
Set ExcelApp = Nothing
感谢大家通过评论帮助我。谢谢你的时间。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句