我在Outlook中有一个宏,我打开了一个保存在桌面上的Excel文件。一旦文件打开,我想运行一个我用excel编写的宏,但我的excel宏都没有。每当我以任何其他方式打开excel时,宏都可用,当我通过outlook vba打开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
答案 0 :(得分: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帮助。