una trabajo tener teclado que puede nueva libro insertar hojas hoja formas cuantas crear con como cerrar excel vba excel-vba outlook outlook-vba

tener - Encontrar un libro de trabajo en una de las mĂșltiples instancias de Excel



que es un libro de excel (3)

Tengo una macro en Outlook VBA que necesita tomar datos de un libro abierto de Excel (" Workbook1 ").

Hago referencia al libro de trabajo que necesito seleccionar de la siguiente manera:

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

Sin embargo, a menudo obtengo el error de tiempo de ejecución 9 , que VBA no puede encontrar el libro de trabajo.

Creo que el problema puede ser que, dado que tengo más de una instancia de Excel abierta, VBA está buscando mi libro de trabajo en la instancia incorrecta .

Es importante para mí tener instancias separadas ya que estoy ejecutando muchos Excels.

¿Cómo hago referencia a mi libro de trabajo cuando ejecuto más de una instancia de Excel ?


Prueba esto

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

O esto que funciona para mí

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


Si desea establecer objApp en una instancia particular de Excel,

puede hacerlo usando el nombre de un libro abierto en esa instancia:

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")


Sospecho que cambiar el nombre del archivo para agregar en la ruta completa del archivo funcionaría, así que intente cambiar la línea:

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

Para algo como:

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