2016-02-26 165 views
2

我將數據從一個工作簿複製到另一個工作簿,然後從複製的工作簿中運行一個宏。下面的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

回答

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 

感謝大家幫助我度過的意見。謝謝你的時間。