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

Forumthread: Importieren von Excel zu Excel per VBA

Importieren von Excel zu Excel per VBA
05.02.2008 10:55:45
Excel
Moin,
wie kann ich eigentlich, wenn es möglich ist, per VBA Daten von einer Excel-Datei in eine andere Excel-Datei importieren? Also z.B. habe ich meine Datei und ich möchte aus der Datei "Test1" ...
- ... das Tabellenblatt "Blatt" importieren. (Nur die Werte)
- ... die Zelle "A1" importieren.
Kann mir jemand da helfen?
Gruß
Gordon

Anzeige

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Importieren von Excel zu Excel per VBA
05.02.2008 12:21:32
Excel
Hi Gordon,
nimm das doch einfach mal mit dem Makro Rekorder auf, dann siehst Du wie das funktioniert. Was der Rekorder macht ist zwar nicht perfekt, aber vielleicht reicht das ja für Dich?
Gruß
Uwe
(:o)

AW: Importieren von Excel zu Excel per VBA
05.02.2008 12:56:00
Excel
@ Uwe:
An den Rekorder hatte ich schon dran gedacht,
aber leider finde ich keine Möglichkeit in meinem Excel aus Excel-Dateien zu importieren. Unter ("Daten" - "Externe Daten") finde ich nur "Textdatei importieten...."
@ Daniel:
Danke, gibt es denn auch Möglichkeiten aus einer geschlossenen Datei zu importieren?

Anzeige
AW: Importieren von Excel zu Excel per VBA
05.02.2008 13:06:00
Excel
HI
im prinzip schon, unter DATEN - EXTERNE DATEN IMPORTIEREN - NEUE ABFRAGE ERSTELLEN (wenn du das nich hast, wurde es erst unter Excel XP eingeführt.
aber auch diese Methode ist nicht so ganz tückenfrei und alles andere als einfach zu bedienen.
ich mache es auch meistens so, daß ich die betreffende Datei per Makro öffne (WORKBOOK.OPEN), die benötigten Daten kopiere und dann die Datei wieder schließe.
das ist von den mir bekannten der einfachste und schnellste Weg.
Gruß, Daniel

Anzeige
AW: Importieren von Excel zu Excel per VBA
05.02.2008 13:18:00
Excel

HI
im prinzip schon, unter DATEN - EXTERNE DATEN IMPORTIEREN - NEUE ABFRAGE ERSTELLEN (wenn du das  _
nich hast, wurde es erst unter Excel XP eingeführt.
aber auch diese Methode ist nicht so ganz tückenfrei und alles andere als einfach zu bedienen.


Hab ich auch gerade mir mal angeguckt. Sieht wirklich etwas unfreundlich in der Bedienung aus?


ich mache es auch meistens so, daß ich die betreffende Datei per Makro öffne (WORKBOOK.OPEN),  _
die benötigten Daten kopiere und dann die Datei wieder schließe.
das ist von den mir bekannten der einfachste und schnellste Weg.


Es müssen dann, nach der Methode, in meinem Fall 11 Datein geöffnet werden. Nimmt das nicht viel Zeit in Anspruch? Kann man das Workbook dann auch wieder schließen?

Anzeige
AW: Importieren von Excel zu Excel per VBA
05.02.2008 13:25:10
Excel
Hi
klar nimmt das Öffnen etwas zeit in anspruch, dafür hast du dann aber auch alle möglichkeiten, z.b. Daten zu suchen usw, was bei geschlossenen Dateien dan schwierig wird.
Geschlossen werden kann ein Workbook dann wieder mit dem .CLOSE - Befehel
wenn du die Dateien nich öffnen willst, kannst du dir die Daten auch dadurch holen, daß die per Makro die Formeln mit den Externen Zellbezügen in eine Zelle schreibst und dann zum Arbeiten die Formel durch die Werte ersetzt.
Gruß, Daniel

Anzeige
AW: Importieren von Excel zu Excel per VBA
05.02.2008 13:36:00
Excel

wenn du die Dateien nich öffnen willst, kannst du dir die Daten auch dadurch holen, daß die per  _
Makro die Formeln mit den Externen Zellbezügen in eine Zelle schreibst und dann zum Arbeiten die Formel durch die Werte ersetzt.


Den Satz habe ich leider nicht so ganz verstanden. :-(
Also mal als Beispiel um vielleicht es einfach zu zeigen was ich vor habe:
Ich habe die Datei "Gesamt". Dort sollen die Daten per "Knopfdruck" importiert werden. Nun habe ich 11 Dateien (Datei01, Datei02, ....,Datei11). Von diesen Dateien will ich immer das gesamte Tabellenblatt "Übersicht" importiert/kopiert haben. Und zwar in jeweils verschiedene Tabellenblätter der Datei "Gesamt".
Es ist, glaube ich, ja kein gravierendes Problem. Nur fehlen mir halt die gundlegenden Begriffe für diesen Quellcode. Kannst mir da vielleicht weiterhelfen?

Anzeige
AW: Importieren von Excel zu Excel per VBA
05.02.2008 13:53:21
Excel
Hi

Workbooks("C:\...\Datei01.xls").open Readonly:=true
activeworkbook.sheets("Übersicht").usedrange.copy
thisworkbook.Sheets("Datei01").cells(1,1).pastespecial xlpastevalues
activeworkbook.close


in etwa so und das für alle Dateien.
die Sheets wo die Daten reinkopiert werden sollen, musst du natürlich vorher anlegen.
es werden nur die Daten kopiert, keine Formlen, keine Formate.
Gruß, Daniel

Anzeige
AW: Importieren von Excel zu Excel per VBA
05.02.2008 14:12:39
Excel
Hab das jetzt mal ausprobiert, leider bekomme da einen Laufzeitfeher:

Laufzeitfehler '9':
Index außerhalb des gültigen Bereichs


Hier mal mein Quelltext fpr den CommanButton:


Private Sub CommandButton1_Click()
Workbooks("C:\Datei01.xls").Open ReadOnly:=True
ActiveWorkbook.Sheets("Übersicht").UsedRange.Copy
ThisWorkbook.Sheets("01").Cells(1, 1).PasteSpecial xlPasteValues
ActiveWorkbook.Close
End Sub


Beim debuggen zeigt er mir die erste Zeile gelb an.

Anzeige
AW: Importieren von Excel zu Excel per VBA
05.02.2008 14:26:20
Excel
HI
sorry, der Befehl zum öffnen eines Workbooks heisst natürlich:
Workbooks.Open Filename:= "C:\...\deineDatei.xls", readonly:=true
gruß, Daniel

AW: Importieren von Excel zu Excel per VBA
05.02.2008 14:33:35
Excel
Super,
das hat so schon mal funktioniert. Hatte aber vorhin einen kleinen Fehler drin bei meinem Beispiel. Es soll nämlich alles aus dem "Übersicht"-Blatt kopiert werden, außer die Formeln. Die Formate wären da auch sehr wichtig.

Anzeige
AW: Importieren von Excel zu Excel per VBA
05.02.2008 14:43:14
Excel
Hi
dann musst du zusätzlich zu den werten noch die formate kopieren
wie das geht, kannst du rausfinden, wenn du mal von Hand Zellen kopierts und dann nur die Formate an einer anderen Stelle einfügst (BEARBEITEN- INHALTE EINFÜGEN - FORMATE)
Dabei lässt du den Recorder mitlaufen, dann siehst du, wie es geht und kannst es in dein Makro einbauen.
Gruß, Daniel

Anzeige
AW: Importieren von Excel zu Excel per VBA
05.02.2008 15:49:24
Excel
Das funktioniert so jetzt wudnerbar! Danke!
Eine Frage aber noch:
Es ist ja so, dass wenn eine Datei geöffnet, Daten kopiert, in die andere Datei eingefügt und dann wieder geschlossen.
Beim Schließen kommt aber dann immer eine Meldung, dass halt in der Zwischenablage sich eine Menge an Daten befindet und ob man diese noch behalten will oder ob der Zwischenspeicher geleert werden kann. Da ja nun 11 Dateien geöffnet und geschlossen werden, kommt diese Meldung 11mal.
Kann man da noch etwas tun?

Anzeige
AW: Importieren von Excel zu Excel per VBA
05.02.2008 16:03:00
Excel
Hi
mal so ausprobieren:

application.displayalerts = false
activeworkbook.close
application.displayalerts = true


mit application.displayalers = false werden die Systemmeldungen unterdrückt, bei Auswahloptionen wird diejnige verwendet, die automatisch genommen wird, wenn man einfach ENTER drücken würde.
die Systemmeldungen sollten natürlich schnellstmöglich wieder eingeschaltet werden.
Gruß, Daniel

Anzeige
AW: Importieren von Excel zu Excel per VBA
05.02.2008 16:07:39
Excel
Ok klasse,
danke für den Tipp und die Hilfe!
Gruß
Gordon

AW: Importieren von Excel zu Excel per VBA
05.02.2008 12:25:05
Excel
Hi
normalerweise wenn beide Dateien geöffnet sind mit diesem Befehl (Kopieren nur Werte, ganzes Blatt)

Workbooks("xxx").Sheets("yyy").Usedrange.copy
Workbooks("aaa").Sheets("bbb").cells(1,1).pastespecial xlpastevalues


eine einzelne Zelle kann man auch importieren:


Workbooks("aaa").sheets("bbb").cells("A1").value = Workbooks("xxx").Sheets("yyy").Range("A1"). _
value


Namen und Zellbereiche natürlich anpassen.
Gruß, Daniel

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Daten aus einer Excel-Datei importieren mit VBA


Schritt-für-Schritt-Anleitung

  1. Excel VBA Editor öffnen:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Neues Modul erstellen:

    • Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.
  3. Makro zum Importieren der Daten schreiben:

    • Füge den folgenden Code ein, um Daten aus einer anderen Excel-Datei zu importieren:
    Sub ImportiereDaten()
       Dim Quelle As Workbook
       Dim Ziel As Workbook
       Set Ziel = ThisWorkbook
    
       ' Öffne die Quell-Datei
       Set Quelle = Workbooks.Open("C:\Pfad\zu\deiner\Datei.xlsx", ReadOnly:=True)
    
       ' Kopiere das gesamte Blatt "Übersicht"
       Quelle.Sheets("Übersicht").UsedRange.Copy
       Ziel.Sheets("ZielBlatt").Cells(1, 1).PasteSpecial xlPasteValues
    
       ' Schließe die Quell-Datei
       Quelle.Close SaveChanges:=False
    End Sub
  4. Makro ausführen:

    • Drücke F5 oder klicke auf Ausführen, um das Makro zu starten und die Daten zu importieren.

Häufige Fehler und Lösungen

  • Laufzeitfehler '9': Index außerhalb des gültigen Bereichs:

    • Dieser Fehler tritt auf, wenn das angegebene Tabellenblatt nicht existiert. Stelle sicher, dass die Namen der Blätter korrekt sind.
  • Datei kann nicht geöffnet werden:

    • Überprüfe den Dateipfad. Stelle sicher, dass der Pfad korrekt angegeben ist und die Datei existiert.
  • Meldung beim Schließen der Datei:

    • Verwende Application.DisplayAlerts = False, um die Warnmeldungen zu unterdrücken, bevor du die Datei schließt.

Alternative Methoden

  • Datenimport ohne Öffnen der Datei:

    • Du kannst auch Daten aus einer geschlossenen Datei importieren, indem du die ADODB-Bibliothek oder QueryTables verwendest.
  • Verwendung des Makro-Rekorders:

    • Nutze den Makro-Rekorder, um die Schritte aufzuzeichnen und den generierten Code zu analysieren. Dies kann dir helfen, den Code besser zu verstehen.

Praktische Beispiele

  • Einzelne Zelle importieren:

    Sub ImportiereEinzelneZelle()
       Dim Quelle As Workbook
       Set Quelle = Workbooks.Open("C:\Pfad\zu\deiner\Datei.xlsx", ReadOnly:=True)
    
       ' Kopiere den Wert von A1
       ThisWorkbook.Sheets("ZielBlatt").Cells(1, 1).Value = Quelle.Sheets("Übersicht").Cells(1, 1).Value
    
       Quelle.Close SaveChanges:=False
    End Sub
  • Formatierungen zusätzlich kopieren:

    Quelle.Sheets("Übersicht").UsedRange.Copy
    Ziel.Sheets("ZielBlatt").Cells(1, 1).PasteSpecial xlPasteFormats

Tipps für Profis

  • Verwendung von Option Explicit:

    • Beginne jedes Modul mit Option Explicit, um sicherzustellen, dass alle Variablen deklariert werden. Dies hilft, Fehler zu vermeiden.
  • Fehlerbehandlung einbauen:

    • Füge eine Fehlerbehandlung hinzu, um unerwartete Fehler zu erfassen und zu bearbeiten.
    On Error GoTo Fehlerbehandlung
    ' Dein Code hier
    Exit Sub
    Fehlerbehandlung:
       MsgBox "Ein Fehler ist aufgetreten: " & Err.Description

FAQ: Häufige Fragen

1. Wie kann ich Daten aus einer geschlossenen Excel-Datei importieren? Du kannst dazu die ADODB-Methode verwenden oder die QueryTables-Funktion nutzen, um Daten aus einer geschlossenen Datei zu importieren.

2. Wie kann ich nur Werte und Formate kopieren? Verwende die PasteSpecial-Methode, um sowohl Werte als auch Formate zu kopieren. Du kannst die entsprechenden PasteSpecial-Argumente kombinieren.

3. Gibt es eine Möglichkeit, den Importvorgang zu automatisieren? Ja, du kannst das Makro so anpassen, dass es in einer Schleife mehrere Dateien importiert, indem du die Dateinamen in einem Array speicherst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige