将VBA转换为VBScript
问题描述:
我将数据从一个工作簿复制到另一个工作簿,然后从复制的工作簿中运行一个宏。下面的VBA代码工作正常。将VBA转换为VBScript
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
感谢大家帮助我度过的意见。谢谢你的时间。
它不起作用?它有多远?发生什么错误? (尝试传递。完整路径) –
@AlexK。我没有得到任何错误。也尝试完整路径.run。数据没有从一本书复制到另一本书。 – Sivaprakash
在ExcelApp引用后你需要额外的'Application'语句吗? ExcelApp已被设置为应用程序。尝试从'ExcelApp.Application.Run'(“other_work_data.xlsm!checkDate”)和'ExcelApp.Application.Quit'移除'Application' – Jordan