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

Forumthread: Daten in andere Datei mit VBA kopieren

Daten in andere Datei mit VBA kopieren
08.01.2009 22:24:36
Markus
Hallo zusammen,
habe wieder mal ein Problem und bitte um Hilfe.
Ich habe 2 Dateien Ausgangsdatei.xls und Zusammenfassung.xls.
Jetzt benötige ich ein Makro, mit welchem ich Werte aus der Ausgangsdatei in die Zusammenfassung kopieren kann.
Die Blätter der Dateien aus denen die Daten kopiert und eingefügt werden haben die gleichen Namen.
z.B.: kopiere aus Ausgangsdatei.xls/Tabelle1 Zelle A5 nach Zusammenfassung.xls/Tabelle1 Zelle B5
Dabei sollen aber nur die selektierten Tabellen von der Ausgangsdatei in die Zusammenfassung übernommen werden.
Für ein Lösung wäre ich euch sehr dankbar.
Danke Gruß Markus
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten in andere Datei mit VBA kopieren
08.01.2009 22:27:07
Markus
Anmerkung: die Blattnamen sollen flexibel sein, sprich nicht mit Namen "Tabelle1" im Makro stehen.
Danke.
AW: Daten in andere Datei mit VBA kopieren
08.01.2009 22:52:00
Daniel
Hi
das könnte so funktionieren.
Das Makro muss in die Datei "Ausgangsdatei.xls", die Datei "Zusammenfassung.xls" muss geöffnet sein.
Kopiert werden die Daten aus den selektierten Sheets, ein Sheet mit dem gleichen Namen muss in "Zusammenfassung.xls" vorhanden sein.

Sub test()
Dim sh As Worksheet
ThisWorkbook.Activate
For Each sh In ActiveWindow.SelectedSheets
sh.Range("A5").Copy Workbooks("Zusammenfassung.xls").Sheets(sh.Name).Range("B5")
Next
End Sub


Anzeige
AW: Daten in andere Datei mit VBA kopieren
09.01.2009 14:51:24
markus473
Danke Daniel, so gehts.
Ist es auch möglich die Zusammenfassung.xls über eine Box aus einer Liste aller geöffneten Excel-Dateien auszuwählen und wie müßte das aussehen?
Kann man das Makro noch in sovern vereinfachen, das diese Zeile nicht 20 mal so steht?
sh.Range("A5").Copy Workbooks("Zusammenfassung.xls").Sheets(sh.Name).Range("B5")
sh.Range("A8").Copy Workbooks("Zusammenfassung.xls").Sheets(sh.Name).Range("C9")
sh.Range("A15").Copy Workbooks("Zusammenfassung.xls").Sheets(sh.Name).Range("D1")
sh.Range("A29").Copy Workbooks("Zusammenfassung.xls").Sheets(sh.Name).Range("B19")
usw.
Danke, das wäre super.
Anzeige
AW: Daten in andere Datei mit VBA kopieren
11.01.2009 23:21:20
Daniel
Hi
erste frage
ja, kann man machen, allerdings braucht man dazu die Userforms.
kennst du dich damit aus?
zweite Frage
wenn es für die zu kopierenden Zellen und die Zielbereiche eine Regelmäßigkeit gibt, könnte man u.U was über schleifen vereinfachen, wenn die zu kopierenden Zellen so wie in deinem Beispiel zufällig verstreut sind, kann man da nichts verkürzen.
du könntest höstens die Textmenge mit der With-Klammer etwas reduzieren:
with Workbooks("Zusammenfassung.xls").Sheets(sh.Name)
sh.Range("A5").Copy .Range("B5")
sh.Range("A8").Copy .Range("C9")
sh.Range("A15").Copy .Range("D1")
sh.Range("A29").Copy .Range("B19")
End with
Gruß, Daniel
Anzeige
AW: Daten in andere Datei mit VBA kopieren
15.01.2009 21:21:20
markus
Hallo zusammen,
habe mal ein Userform angelegt, wie es aussehen könnte und mir hier mal einen Code gesucht,
dieser müßte "nur" noch angepaßt werden.
Es sollte so sein, das wenn ich das Makro Übernahme_Januar auslöse zuerst die Abfrage über das Userform kommt (Datei auswählen) und dann die Operation mit dem Commandbutton1 ausgeführt wird. Und das gleiche im Februar usw.
Für Eure Hilfe wäre ich sehr dankbar.
Gruß Markus
https://www.herber.de/bbs/user/58450.xls
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Daten in andere Datei per VBA kopieren


Schritt-für-Schritt-Anleitung

Um Daten in eine andere Arbeitsmappe per VBA Makro zu kopieren, folge diesen Schritten:

  1. Öffne die Ausgangsdatei (z.B. Ausgangsdatei.xls) und die Ziel-Datei (z.B. Zusammenfassung.xls).

  2. Füge das folgende Makro in das VBA-Editor-Fenster der Ausgangsdatei.xls ein:

    Sub test()
       Dim sh As Worksheet
       ThisWorkbook.Activate
       For Each sh In ActiveWindow.SelectedSheets
           sh.Range("A5").Copy Workbooks("Zusammenfassung.xls").Sheets(sh.Name).Range("B5")
       Next
    End Sub
  3. Wähle die gewünschten Blätter in der Ausgangsdatei.xls aus, bevor du das Makro ausführst.

  4. Starte das Makro über die Entwicklertools oder durch Drücken von F5 im VBA-Editor.


Häufige Fehler und Lösungen

  • Fehler: „Datei nicht gefunden“

    • Lösung: Stelle sicher, dass die Zusammenfassung.xls geöffnet ist und der Name korrekt geschrieben ist.
  • Fehler: „Blatt nicht vorhanden“

    • Lösung: Vergewissere dich, dass die Blätter in beiden Dateien denselben Namen haben. Die Daten können nur kopiert werden, wenn die entsprechenden Blätter existieren.
  • Fehler: „Bereich nicht gefunden“

    • Lösung: Stelle sicher, dass die Zellen, die du kopieren möchtest, existieren und korrekt referenziert sind.

Alternative Methoden

Wenn du Excel-Daten in andere Dateien übertragen möchtest, gibt es auch alternative Ansätze:

  1. UserForms verwenden: Du kannst ein UserForm erstellen, das es dir ermöglicht, die Ziel-Datei aus einer Liste aller geöffneten Excel-Dateien auszuwählen.
  2. Excel VBA Daten aus anderer Datei kopieren ohne Öffnen: Du kannst auch Daten aus einer geschlossenen Datei kopieren, indem du ADODB verwendest, um auf die Daten zuzugreifen.

Praktische Beispiele

Hier sind einige Beispiele, wie du spezifische Zellen kopieren kannst:

With Workbooks("Zusammenfassung.xls").Sheets(sh.Name)
    sh.Range("A5").Copy .Range("B5")
    sh.Range("A8").Copy .Range("C9")
    sh.Range("A15").Copy .Range("D1")
    sh.Range("A29").Copy .Range("B19")
End With

Falls du viele Zellen hast, die du kopieren möchtest, könntest du eine Schleife verwenden, um die Zellen dynamisch zu referenzieren.


Tipps für Profis

  • Verwende With-Klammern: Dies reduziert den Code und verbessert die Lesbarkeit, wenn du mehrmals auf dasselbe Objekt zugreifst.
  • Fehlerbehandlung einbauen: Implementiere On Error Resume Next, um sicherzustellen, dass dein Makro nicht abstürzt, wenn es auf ein Problem stößt.
  • Makros optimieren: Überlege, ob deine Kopieroperationen eine Regelmäßigkeit aufweisen und ob du dies mit Schleifen automatisieren kannst.

FAQ: Häufige Fragen

1. Wie kann ich Daten aus einer anderen Datei kopieren, ohne diese zu öffnen? Du kannst ADODB verwenden, um auf die Daten zuzugreifen, ohne die Datei zu öffnen.

2. Ist es möglich, die Ziel-Datei über eine Benutzeroberfläche auszuwählen? Ja, du kannst ein UserForm erstellen, das die Benutzeroberfläche für die Dateiauswahl bereitstellt.

3. Was ist der Vorteil von VBA gegenüber anderen Methoden? VBA ermöglicht eine automatisierte und wiederholbare Datenübertragung, die für große Datenmengen effizient ist.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige