Set Excel workbook from Access

Anonym
2022-03-19T10:39:26+00:00

Hallo community,

aus Access heraus möchte ich eine Excel Tabelle Aktivieren. Öffnen der Tabelle funktioniert problemlos, wenn ich aber die Tabelle, die im Hintergrund ist, wieder aktivieren und sichtbar machen möchte beiße ich mir die Zähne aus.

Dim Ret 

Dim ExcelApp As Object 

Dim WB As Workbook 

Dim TargetWorkbook As Workbook 

Set ExcelApp = CreateObject("Excel.Application")

'Check if workbook is open**********************************************************************

Ret = IsWorkBookOpen("C:/TDB\_DataBase/Process\_Data\_Analysis.xlsm") 

If Ret = True Then 

 '   ExcelApp.Visible = True 

    Set TargetWorkbook = ExcelApp.Workbooks("C:/TDB\_DataBase/Process\_Data\_Analysis.xlsm")   <== Her tritt der Fehler auf , Laufzeitfehler 9 Subscript out of range. 

 '   Workbooks("Process\_Data\_Analysis.xlsm").Activate 

 '   MsgBox "The name of the active workbook is " & ActiveWorkbook.Name 

 '    Workbooks("Process\_Data\_Analysis.xlsm").Visible = True 

' Set TargetWorkbook = ExcelApp.Workbooks.Open("C:/TDB_DataBase/Process_Data_Analysis.xlsm")

' ExcelApp.Visible = True

' TargetWorkbook.Worksheets("Source").Range("A2").CopyFromRecordset rsEPRT

    GoTo 700 

Else 

    Set TargetWorkbook = ExcelApp.Workbooks.Open("C:/TDB\_DataBase/Process\_Data\_Analysis.xlsm") 

    ExcelApp.Visible = True 

    TargetWorkbook.Worksheets("Source").Range("A2").CopyFromRecordset rsEPRT 

End If

Laufzeitfehler deutet auf Fehler im Filenamen hin aber der ist korrekt und wenn ich prüfe ob der File offen ist, dann funktioniert das mit dem Filenamen anstandslos, auch wenn ich den File öffne dann funktioniert das mit dem Filenamen. Das Problem taucht nicht nur bei der Kommandozeile "Set TargetWorkbook..........." auf sondern auch bei den nachfolgenden Kommandos " Workbooks....Activate" und "Workbooks.visible......" ich schaffe es einfach nicht, die offene Exceltabelle im Vordergrund sichtbar werden zu lassen. Kann mir bitte jemand auf die Sprünge helfen??

Danke

Peter

Microsoft 365 und Office | Access | Andere | Windows

Gesperrte Frage. Diese Frage wurde aus der Microsoft-Support-Community migriert. Sie können darüber abstimmen, ob sie hilfreich ist, aber Sie können keine Kommentare oder Antworten hinzufügen oder der Frage folgen.

0 Kommentare Keine Kommentare

16 Antworten

Sortieren nach: Am hilfreichsten
  1. Anonym
    2022-03-21T08:37:23+00:00

    Hallo,

    [...] Ich will die geöffnete Excel Tabelle zur aktiven Tabelle machen [...]

    Ah, ja. Wie bereits erwähnt, wäre es hilfreich, wenn du die Stelle postest, an der die entsprechende(n) Objektzuweisung(en) gemacht werden, sprich IsWorkBookOpen.

    Gruss - Peter

    War diese Antwort hilfreich?

    0 Kommentare Keine Kommentare
  2. Anonym
    2022-03-21T08:05:47+00:00

    Hallo Peter,

    danke für deine Hinweise, habe alles so gemacht, auch early and late binding ausprobiert aber das eigentliche Problem existiert weiterhin. Workbook.open hat schon immer funktioniert aber das ist nicht mein Problem. Ich will die geöffnete Excel Tabelle zur aktiven Tabelle machen damit ich dann per CopyFromRecordset Daten übertragen kann, das funktioniert beim Öffnen problemslos, wenn aber die Tabelle geöffnet ist dann wird mit Workbook.Open Kommando eine Kopie der Tabelle mit gleichem Namen aber Schreibschutz geöffnet und das hilft mir nicht.

    Wie kann ich die Tabelle zur aktiven Tabelle machen oder vermeiden, dass beim Workbook.Open Kommando eine Kopie angelegt wird?

    Gruss

    Peter

    War diese Antwort hilfreich?

    0 Kommentare Keine Kommentare
  3. Anonym
    2022-03-20T18:26:19+00:00

    Hallo,

    Lass trotzdem den Backslash drin, denn mit dem Forward-Slash wird das sicher nichts. ;-)

    Ansonsten::

    • Zu IsWorkBookOpen kann ich nichts sagen, die Funktion hattest du nicht gepostet.
    • Dim Ret sollte Dim Ret As Boolean lauten.
    • Du hast eine Mischung aus Early und Late Binding. Entscheide dich für eine Methode, Also entweder
      • Dim ExcelApp As Excel.Application
      • Dim WB As Workbook
      • Set ExcelApp = New Excel.Application oder:
      • Dim ExcelApp As Object
      • Dim WB As Object
      • Set ExcelApp = CreateObject("Excel.Application")

    Entscheidend für die Fehlermeldung ist folgende Zeile:

    Set TargetWorkbook = ExcelApp.WorkBooks("C:\TDB_DataBase\Process_Data_Analysis.xlsm")

    sollte lauten:

    Set TargetWorkbook = ExcelApp.WorkBooks**.Open**(FileName:="C:\TDB_DataBase\Process_Data_Analysis.xlsm")

    Gruss - Peter

    War diese Antwort hilfreich?

    0 Kommentare Keine Kommentare
  4. Anonym
    2022-03-19T15:02:45+00:00

    Hallo Peter,

    danke für deine schnelle Antwort.

    Im Prinzip ist mir das bekannt aber in der Zeile: IsWorkBookOpen("C:/TDB_DataBase/Process_Data_Analysis.xlsm") funktioniert das Problemlos, deshalb habe ich einfach Kopiert. Habe es mit Backlash probiert, Fehler nach wie vor, also am Backlash kann es nicht liegen.

    Gruss

    Peter

    War diese Antwort hilfreich?

    0 Kommentare Keine Kommentare
  5. Anonym
    2022-03-19T11:09:58+00:00

    Hallo,

    Bevor ich ins Detail gehe, du weißt, dass der Pfad durch Backslash getrennt werden muss? Also "C:\TBD_Database\Process_Data_Analysis.xlsm".

    Gruss - Peter

    War diese Antwort hilfreich?

    0 Kommentare Keine Kommentare