在多个Excel实例之一中查找工作簿

我在Outlook VBA中需要从打开的Excel工作簿(“ Workbook1 ”)中获取数据的macros。

我参考我需要select的工作簿,如下所示:

 Dim objApp As Excel.Application Set objApp = GetObject(, "Excel.Application") Set wb = objApp.Workbooks("Workbook1.xlsx") 

但是,经常出现运行时错误9 ,VBA找不到工作簿。

我认为这个问题可能是因为我打开了多个Excel实例, VBA正在错误地查找我的工作簿

自从我运行许多Excels以来,对我来说有重要的独立实例。

运行多个Excel实例时,如何引用我的工作簿

尝试这个


 Option Explicit Public Sub Example() Dim xlApp As Excel.Application Dim Book As Workbook Set xlApp = New Excel.Application Set Book = xlApp.Workbooks.Open(Environ( _ "USERPROFILE") & "\Documents\Temp\Temp.xlsm") ' Do something Set xlApp = Nothing Set Book = Nothing End Sub 

或者这对我有用。


 Option Explicit Public Sub Example() Dim xlApp As Excel.Application Dim Book As Excel.Workbook Dim Sht As Excel.Worksheet Dim xlStarted As Boolean Dim FilePath As String Dim Cell As Range Dim Rng As Range ' // File Path FilePath = "C:\Temp\Temp.xlsx" Debug.Print FilePath ' // If Error get Excel Application On Error Resume Next Set xlApp = GetObject(, "Excel.Application") If Err <> 0 Then Application.StatusBar = "Please wait while Excel source is opened ... " Set xlApp = CreateObject("Excel.Application") xlStarted = True End If ' // Open Workbook, Sheet1 to get data Set Book = xlApp.Workbooks.Open(FilePath) Set Sht = Book.Sheets("Sheet1") ' // Set range variable Set Rng = Sht.Range("A1") For Each Cell In Rng Debug.Print Cell.Value Next '// Close & SaveChanges Book.Close SaveChanges:=True If xlStarted Then xlApp.Quit End If Set xlApp = Nothing Set Book = Nothing Set Sht = Nothing End Sub 

我怀疑,更改文件名称以添加完整的文件path将工作,所以请尝试更改行:

 Set wb = objApp.Workbooks("Workbook1.xlsx") 

像这样的东西:

 Set wb = objApp.Workbooks("C:\Users\Documents\Workbook1.xlsx") 

如果要将objApp设置为Excel的特定实例,

您可以在该实例中使用打开的工作簿的名称:

 Dim objApp As Excel.Application Dim objWbk As Excel.Workbook Dim wB As Excel.Workbook Set objWbk = GetObject("Workbook1.xlsx") Set objApp = objWb.Application Set wB = objApp.Workbooks("Workbook1.xlsx")