将VBA转换为VBScript

将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 

由于我是新来vbavbscript,谁能告诉我,我做错了吗?我在堆栈溢出中遇到了类似的问题,但我没有理清这个问题。

+0

它不起作用?它有多远?发生什么错误? (尝试传递。完整路径) –

+0

@AlexK。我没有得到任何错误。也尝试完整路径.run。数据没有从一本书复制到另一本书。 – Sivaprakash

+0

在ExcelApp引用后你需要额外的'Application'语句吗? ExcelApp已被设置为应用程序。尝试从'ExcelApp.Application.Run'(“other_work_data.xlsm!checkDate”)和'ExcelApp.Application.Quit'移除'Application' – Jordan

我已经整理出了问题。其实这个问题很简单。我使用子程序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 

感谢大家帮助我度过的意见。谢谢你的时间。