我正在将数据从一个工作簿复制到另一个工作簿,然后从复制的工作簿中运行宏。以下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
的新手,有人能告诉我我做错了什么吗?我在堆栈溢出中遇到过类似的问题,但我没有解决这个问题。
答案 0 :(得分:2)
我已经解决了这个问题。实际上,问题很简单。我使用了子程序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
感谢大家帮助我完成评论。谢谢你的时间。