Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA: Geöffnetes Workbook wieder aktivieren

VBA: Geöffnetes Workbook wieder aktivieren
01.10.2004 13:01:34
Joe
Hiho,
hab n einfaches(?) Problem : wenn ich eine datei über dialogbox habe öffnen lassen..wie greife ich dann wieder darauf zu ?
ich möchte mal wieder daten von einer tabelle in ne andere kopieren..

Sub DatenHolen()
ChDir CurDir
Dim Daten As Variant
Daten = Application.GetOpenFilename("Excel-Arbeitsmappe (*.xls),  *.xls", , "Rohdaten auslesen")
Workbooks.Open Daten
Range("C19:C27").Select
Selection.Copy
ThisWorkbook.Activate
Range("C6").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
[HIER WILL ICH ZURÜCK ZUR GEÖFFNETEN DATEI..]
Range("R19:R27").Select
Selection.Copy
u.s.w
End Sub

wer kann mir den passenden befehl sagen ?
danke mal wieder für eure hilfe ( ohne das forum hier wär ich a.A. ;) )
Joe
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: Geöffnetes Workbook wieder aktivieren
Uduuh
Hallo,
verweise mit einer Objektvariablen darauf.
Workbooks.Open Daten
Set wbkDaten=ActiveWorkbook
Du brauchst aber gar nicht hin und her zu hüpfen.
Dim Daten As Variant
Daten = Application.GetOpenFilename("Excel-Arbeitsmappe (*.xls), *.xls", , "Rohdaten auslesen")
Workbooks.Open Daten
Range("C19:C27").Copy
ThisWorkbook.Sheets(1).Range("C6").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= False, Transpose:=False
'[HIER WILL ICH ZURÜCK ZUR GEÖFFNETEN DATEI..]
Range("R19:R27").Copy
u.s.w
End Sub
Gruß aus'm Pott
Udo
Anzeige
AW: VBA: Geöffnetes Workbook wieder aktivieren
Reinhard
Hi Joe,

Sub DatenHolen()
ChDrive Left(CurDir, 1)
ChDir CurDir
Set wbZiel = ThisWorkbook.Worksheets("Tabelle1")
Dim Daten As Variant
Daten = Application.GetOpenFilename("Excel-Arbeitsmappe (*.xls),  *.xls", , "Rohdaten auslesen")
Workbooks.Open Daten
Set wbQuelle = ActiveWorkbook.Worksheets("Tabelle1")
With wbQuelle
.Range("C19:C27").Copy Destination:=wbZiel.Range("C6")
.Range("R19:R27").Copy Destination:=wbZiel.Range("R6")
'usw
End With
wbZiel.Activate
Set wbZiel = Nothing
Set wbQuelle = Nothing
End Sub

Gruß
REinhard
Anzeige
AW: VBA: Geöffnetes Workbook wieder aktivieren
Joe
Hi ihr beiden..
das löst mein Problem UND enthält ne Reihe interessanter neuer Anregungen !
Also..vielen Dank für die schnellen und kompetenten Antworten !
mit neuem Feuereifer ;)
Joe
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Geöffnetes Workbook in Excel VBA aktivieren


Schritt-für-Schritt-Anleitung

Um ein geöffnetes Workbook in Excel VBA wieder zu aktivieren, kannst du eine Objektvariable verwenden. Hier ist eine Schritt-für-Schritt-Anleitung, um dies zu erreichen:

  1. Öffne die Datei über eine Dialogbox:

    Dim Daten As Variant
    Daten = Application.GetOpenFilename("Excel-Arbeitsmappe (*.xls),  *.xls", , "Rohdaten auslesen")
    Workbooks.Open Daten
  2. Setze die aktive Arbeitsmappe in eine Variable:

    Dim wbQuelle As Workbook
    Set wbQuelle = ActiveWorkbook
  3. Kopiere die gewünschten Daten in dein Ziel-Workbook:

    ThisWorkbook.Sheets(1).Range("C6").PasteSpecial Paste:=xlValues
  4. Aktiviere das ursprüngliche Workbook wieder:

    wbQuelle.Activate
  5. Fahre mit weiteren Operationen fort:

    Range("R19:R27").Copy

Häufige Fehler und Lösungen

  • Fehler: "Objektvariable nicht gesetzt"
    Stelle sicher, dass du die Variable für die Workbook-Referenz korrekt gesetzt hast, bevor du darauf zugreifst.

  • Fehler: Arbeitsmappe nicht gefunden
    Überprüfe, ob der Dateipfad korrekt ist und die Datei tatsächlich geöffnet wurde.

  • Lösung: Verwendung von Set
    Wenn du eine Workbook-Variable ansprechen möchtest, benutze immer Set, um die Referenz zu setzen:

    Set wbQuelle = ActiveWorkbook

Alternative Methoden

Wenn du die aktive Arbeitsmappe nicht direkt ansprechen möchtest, kannst du auch die Workbooks-Sammlung verwenden, um auf eine bestimmte Arbeitsmappe zuzugreifen:

Workbooks("NameDerDatei.xls").Activate

Diese Methode ist hilfreich, wenn du den Namen der Arbeitsmappe kennst.


Praktische Beispiele

Hier ist ein komplettes Beispiel, das zeigt, wie du ein Workbook öffnest, Daten kopierst und dann die ursprüngliche Arbeitsmappe wieder aktivierst:

Sub DatenHolen()
    Dim wbZiel As Workbook
    Dim wbQuelle As Workbook
    Dim Daten As Variant

    ' Aktuelle Arbeitsmappe setzen
    Set wbZiel = ThisWorkbook

    ' Datei öffnen
    Daten = Application.GetOpenFilename("Excel-Arbeitsmappe (*.xls),  *.xls", , "Rohdaten auslesen")
    Set wbQuelle = Workbooks.Open(Daten)

    ' Daten kopieren
    wbQuelle.Sheets(1).Range("C19:C27").Copy Destination:=wbZiel.Sheets(1).Range("C6")

    ' Ursprüngliche Arbeitsmappe aktivieren
    wbQuelle.Activate
    wbQuelle.Sheets(1).Range("R19:R27").Copy Destination:=wbZiel.Sheets(1).Range("R6")

    ' Variablen aufräumen
    Set wbZiel = Nothing
    Set wbQuelle = Nothing
End Sub

Tipps für Profis

  • Nutze ThisWorkbook: Verwende ThisWorkbook, um sicherzustellen, dass du immer auf das Workbook zugreifst, das den Code enthält.

  • Fehlerbehandlung einfügen: Implementiere eine Fehlerbehandlung, um sicherzustellen, dass dein Code auch bei unerwarteten Fehlern gut funktioniert.

  • Benutze With-Blöcke: Wenn du häufig auf ein Workbook oder ein Arbeitsblatt zugreifst, nutze With-Blöcke, um deinen Code zu optimieren:

    With wbQuelle
      .Range("C19:C27").Copy Destination:=wbZiel.Range("C6")
      .Range("R19:R27").Copy Destination:=wbZiel.Range("R6")
    End With

FAQ: Häufige Fragen

1. Frage
Wie kann ich eine Arbeitsmappe ohne Dialogbox öffnen?
Antwort: Du kannst die Methode Workbooks.Open direkt mit dem Dateipfad verwenden:

Workbooks.Open "C:\Pfad\Zur\Datei.xls"

2. Frage
Kann ich mehrere Arbeitsmappen gleichzeitig aktivieren?
Antwort: Du kannst nur eine Arbeitsmappe gleichzeitig aktivieren. Du kannst jedoch zwischen ihnen wechseln, indem du die entsprechende Variable oder den Namen der Arbeitsmappe verwendest.

3. Frage
Wie kann ich auf ein bestimmtes Arbeitsblatt in einer Arbeitsmappe zugreifen?
Antwort: Du kannst auf ein Arbeitsblatt in einer Arbeitsmappe mit dem Namen des Arbeitsblatts zugreifen:

wbQuelle.Sheets("NameDesBlatts").Activate

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige