Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Workbook mit Variable aktivieren und schliessen

Workbook mit Variable aktivieren und schliessen
28.05.2018 18:57:15
Holger
Hallo zusammen
ich kämpfe bereits an der Frustrationsgrenze ...
Mein Makro startet aus der Datei "Dashboard.xlsm" und öffnet als erstes eine Datei deren Name in der Zelle "AD8" steht (Variabler Name). Aus dieser Datei wird dann ein bestimmter Inhalt Kopiert und in meiner "Dashboard.xlsm" auf einem weiteren Tab "Datensatz 2" eingefügt. Soweit funktioniert alles. Jetzt will ich zurück zu dem Variablen File um es (ohne zu speichern!) zu schliessen, aber genau hier versage ich auf ganzer Linie:
Sub Datensatz_öffnen()
Workbooks.Open Filename:= _
"Z:\Client Contracts\Datensätze\Daten_" & Range("AD8") & ".xlsx"
Range("A2").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Copy
Windows("Dashboard.xlsm").Activate
Sheets("Datensatz 2").Select
Range("A2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.WindowState = xlNormal
Wie komme ich an dieser Stelle zurück zu der variabel geöffneten Datei?
Kann mir jemand helfen?
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Workbook mit Variable aktivieren und schliessen
28.05.2018 19:13:19
Werner
Hallo Holger,
ungetestet:
Sub Datensatz_öffnen()
Workbooks.Open Filename:= _
"Z:\Client Contracts\Datensätze\Daten_" & Range("AD8") & ".xlsx"
UsedRange.Copy
ThisWorkbook.Worksheets("Datensatz 2").Range("A2").PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
ActiveWorkbook.Close False
Application.WindowState = xlNormal
End Sub
Gruß Werner
Anzeige
AW: Workbook mit Variable aktivieren und schliessen
28.05.2018 19:30:28
Holger
Hallo Werner
Ungetestet alles richtig gemacht! Du rettest mir den Abend!!!
Danke
BG
Holger
Nachtrag
28.05.2018 19:42:36
Werner
Hallo Holger,
hat denn deine Datei, die du öffnest, nur ein Tabellenblatt?
Wenn nein, dann sollte dir klar sein, dass es reines Glückspiel ist, von welchem Blatt du die Daten holst.
Da du nicht auf ein bestimmtes Blatt der Quelldatei referenzierst, holst du die Daten immer vom gerade aktiven Blatt ab.
Und welches Blatt beim Öffnen der Datei aktiv ist, hängt davon ab, welches Blatt beim letzten Speichern aktiv war.
Speicherst du die Datei ab und Blatt 3 ist das aktive Blatt, dann holst du dir die Daten vom Blatt 3. War aber beim letzten Abspeichern Blatt 1 aktiv, dann holst du die Daten vom Blatt 1.
Zudem bitte nicht das Kontrollkästchen aktivieren wenn das Problem gelöst ist. Das setzt den Beitrag nämlich auf offen, also ungelöst.
Gruß Werner
Anzeige
AW: Workbook mit Variable aktivieren und schliessen
28.05.2018 19:27:13
Daniel
Hi
lass mal die selektierei sein und referenziere vollständig.
dann bleibt die mit Workbooks.Open geöffnete Datei immer die aktive und du kannst sie mit
ActiveWorkbook.close false schließen, ohne dich darum kümmern zu müssen wie sie heißt:.den Bezug auf die Datei, die das Makro enthält, kann man immer mit THISWORKBOOK angeben, auch dann muss man sich nicht mehr um den Dateinamen kümmern
Sub Datensatz_öffnen()
Workbooks.Open Filename:= _
"Z:\Client Contracts\Datensätze\Daten_" & Range("AD8") & ".xlsx"
Range(Range("A2"), Range("A2").End(xlDown).End(xlToRight)).Copy
ThisWorkbook.Sheets("Datensatz 2").Range("A2").PasteSpecial Paste:=xlPasteValues
ActiveWorkbook.Close False
wenn du sicher gehen willst: dein Dateiname steht doch in der Zelle, also:
Workbooks("Daten_" & ThisWorkbook.Sheets("?").Range("AD8") & ".xlsx").Close False

mit Variable würde das ganze so gehen:
dim wb as Workbook
Set wb = Workbooks.Open(Filename:= _
"Z:\Client Contracts\Datensätze\Daten_" & Range("AD8") & ".xlsx")
Range(Range("A2"), Range("A2").End(xlDown).End(xlToRight)).Copy
ThisWorkbook.Sheets("Datensatz 2").Range("A2").PasteSpecial Paste:=xlPasteValues
wb.close False
beachte, dass du so bei WorkbooksOpen die Parameter in Klammern setzen musst.
führst du das workbook.Open allein in der Befehlszeile aus, darfst du keine klammern setzen.
Gruß Daniel
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Workbook mit Variable aktivieren und schließen


Schritt-für-Schritt-Anleitung

Um ein Workbook in Excel VBA zu öffnen, zu aktivieren und anschließend zu schließen, kannst Du den folgenden Code verwenden. Dieser Code öffnet eine Datei mit einem variablen Namen, kopiert Daten und schließt die Datei anschließend, ohne sie zu speichern.

Sub Datensatz_öffnen()
    Dim wb As Workbook
    Set wb = Workbooks.Open(Filename:= _
    "Z:\Client Contracts\Datensätze\Daten_" & Range("AD8") & ".xlsx")

    Range(Range("A2"), Range("A2").End(xlDown).End(xlToRight)).Copy
    ThisWorkbook.Sheets("Datensatz 2").Range("A2").PasteSpecial Paste:=xlPasteValues
    wb.Close False
End Sub

Hierbei wird die Variable wb als Workbook deklariert und auf das geöffnete Workbook gesetzt. Dadurch kannst Du das Workbook später einfach mit wb.Close False schließen, ohne den Namen der Datei angeben zu müssen.


Häufige Fehler und Lösungen

  1. Fehler: Workbook lässt sich nicht finden

    • Lösung: Stelle sicher, dass der Dateipfad in der Workbooks.Open-Methode korrekt ist. Überprüfe auch, ob der Dateiname in Zelle "AD8" vorhanden und korrekt ist.
  2. Fehler: Daten werden vom falschen Blatt kopiert

    • Lösung: Wenn Du kein bestimmtes Blatt referenzierst, werden die Daten vom zuletzt aktiven Blatt kopiert. Verwende immer ThisWorkbook.Sheets("SheetName"), um sicherzustellen, dass Du die richtigen Daten kopierst.

Alternative Methoden

Eine alternative Methode, die Du verwenden kannst, ist das direkte Arbeiten mit ActiveWorkbook. Diese Methode erfordert keine zusätzlichen Variablen:

Sub Datensatz_öffnen()
    Workbooks.Open Filename:= _
    "Z:\Client Contracts\Datensätze\Daten_" & Range("AD8") & ".xlsx"

    ActiveWorkbook.Sheets(1).UsedRange.Copy
    ThisWorkbook.Sheets("Datensatz 2").Range("A2").PasteSpecial Paste:=xlPasteValues
    ActiveWorkbook.Close False
End Sub

Hierbei wird das erste Blatt der geöffneten Datei verwendet, um die Daten zu kopieren.


Praktische Beispiele

  1. Beispiel mit Workbook-Variable:

    Dim wb As Workbook
    Set wb = Workbooks.Open(Filename:="Z:\Path\To\File.xlsx")
    ' Weitere Operationen
    wb.Close False
  2. Beispiel zur Nutzung mehrerer Worksheets:

    Dim ws As Worksheet
    Set ws = wb.Sheets("Datenblatt")
    ws.Range("A1").Value = "Neuer Wert"

In diesen Beispielen siehst Du, wie Du die vba workbook variable effektiv nutzen kannst, um Deinen Code klarer und effizienter zu gestalten.


Tipps für Profis

  • Verwende vba dim as workbook, um Deine Variablen klar zu deklarieren. Das verbessert die Lesbarkeit Deines Codes.
  • Nutze On Error Resume Next, um Fehler bei der Öffnung von Workbooks zu vermeiden. Dies kann besonders nützlich sein, wenn Du mit Dateien arbeitest, die möglicherweise nicht vorhanden sind.
  • Achte darauf, dass Du mit Set wb = ThisWorkbook arbeitest, wenn Du auf das Workbook zugreifen möchtest, aus dem das Makro ausgeführt wird.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass ich die richtige Datei öffne?
Stelle sicher, dass der Pfad und der Dateiname korrekt sind. Du kannst den vollständigen Pfad in Zelle "AD8" überprüfen.

2. Was passiert, wenn ich wb.Close False verwende?
Das Workbook wird geschlossen, ohne dass die Änderungen gespeichert werden. Wenn Du speichern möchtest, ändere False in True.

3. Wie kann ich auf ein bestimmtes Worksheet zugreifen?
Du kannst die Referenz zu einem Worksheet mit Set ws = wb.Sheets("SheetName") setzen, um spezifisch auf ein Blatt zuzugreifen.

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