2013-05-09 67 views
0

我在Outlook中有一個宏,我打開一個保存在桌面上的Excel文件。一旦文件打開,我想運行一個我用excel編寫的宏,但是我的excel宏都不可用。無論何時我以其他方式打開excel,宏都可用,並且在通過outlook vba打開excel時啓用宏。我的問題是,當我通過Outlook宏打開Excel時,如何使這些宏可用?請參考下面的代碼。當從Outlook宏打開Excel時,不存在現有的宏

'Pre:None 
'Post:Excel will have been opened, and the macro "CreatePowerPoint()" 
'  will have been run on the excel document 
Sub Gimba() 
    Dim xlApp As Object, xlWkb As Object 
    'open excel 
    Set xlApp = CreateObject("Excel.Application") 
    xlApp.Visible = True ' can be False if you do not wont see reaction, 
        ' byt make sure is not fail 
    'Do not show any alerts 
    xlApp.DisplayAlerts = False 

    'open excel document 
    Set xlWkb = xlApp.Workbooks.Open(file path goes here) 

    'call macro on excel document 
    Call xlApp.Run("CreatePowerPoint") 
End Sub 

回答

4

我假設您通常可用的宏存儲在您的personal.xls工作簿中?如果是這樣,那麼在你嘗試啓動你的CreatePowerPoint宏之前,你只需要加載它。

嘗試類似(取決於你的個人工作簿存儲在那裏):

xlApp.Workbooks.Open ("C:\Documents and Settings\YourUserNameHere\Application Data\Microsoft\Excel\XLSTART\personal.xlsb") 

順便說一句,你可能會發現,如果你使用早期綁定更容易地編寫VBA代碼。爲此,需要添加對Excel模型的引用,然後使用Set xlApp = new Excel.Application代替CreateObject。這樣你就可以獲得Intellitype的所有幫助。

+0

'CreateObject'與綁定無關。他將不得不引用對象庫,然後聲明xlApp對象'As Excel.Application'。他仍然可以使用'CreateObject'。 – JimmyPena 2013-05-20 20:47:08

+0

但是,如果您使用CreateObject,則在使用New語句時不會獲得智能感知幫助,這是評論的要點 – steveo40 2013-05-21 10:16:03

+0

您需要從實例化中分離綁定。當您在聲明對象時使用'New'關鍵字時,無論您如何實例化對象,您都會在該行和後續行上獲得Intellisense。試試看看。 – JimmyPena 2013-05-22 20:10:41