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

Forumthread: Tabellenblatt importieren

Tabellenblatt importieren
02.06.2017 10:13:24
Sandra
Hallo Forum,
ich versuche jetzt schon ein paar Tage ein Makro zu basteln.
Ich möchte per VBA ein beliebiges Tabellenblatt in meine aktive Arbeitsmappe importieren. Kopiert werden soll immer "Tabelle1" und soll dann als viertes Tabellenblatt mit dem Namen "Druckschriften" eingefügt werden.
Ich habe bereits ein Makro aufgenommen und etwas abgeändert:
Option Explicit

Sub kopieren()
Dim WBZiel As Workbook, ExportDatei As Variant
Dim WBQuelle As Workbook, WSZiel As Worksheet
Set WBZiel = ThisWorkbook
Application.ScreenUpdating = False
ExportDatei = Application.GetOpenFilename("Excel-Dateien, *.xl*", , "Bitte die Datei zum  _
Kopieren öffnen ...")
ExportDatei = CStr(ExportDatei)
If ExportDatei = "Falsch" Then Exit Sub
Set WBQuelle = Workbooks.Open(ExportDatei)
Sheets("Tabelle1").Select (an dieser Stelle, kommt eine Fehlermeldung:
Laufzeitfehler 9, Index auserhalb des gültigen Bereichs)
    Sheets("Tabelle1").Copy Before:=Workbooks("überarbeitung.xlsm").Sheets(4)
Sheets("Tabelle1").Select
Sheets("Tabelle1").Name = "Druckschriften"
End Sub

Was mach ich falsch?
Vielen Dank vorab
Sandra
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabellenblatt importieren
02.06.2017 10:17:59
yummi
Hallo Sandra,
versuch mal so (Referenzieren heisst das Zauberwort)

Sub kopieren()
Dim WBZiel As Workbook, ExportDatei As Variant
Dim WBQuelle As Workbook, WSZiel As Worksheet
Set WBZiel = ThisWorkbook
Application.ScreenUpdating = False
ExportDatei = Application.GetOpenFilename("Excel-Dateien, *.xl*", , "Bitte die Datei zum  _
Kopieren öffnen ...")
ExportDatei = CStr(ExportDatei)
If ExportDatei = "Falsch" Then Exit Sub
Set WBQuelle = Workbooks.Open(ExportDatei)
WBQuelle.Sheets("Tabelle1").Copy Before:=WBZiel.Sheets(4)
WNQuelle.Sheets("Tabelle1").Name = "Druckschriften"
End Sub
Ist aber ungetestet.
Gruß
yummi
Anzeige
AW: Tabellenblatt importieren
02.06.2017 10:33:25
Sandra
Hallo yummi,
WOW! das ging verdammt schnell. Erstmal besten Dank! Meine VBA Kenntnisse halten sich noch in Grenzen.
Leider bekomme ich hier:
WBQuelle.Sheets("Tabelle1").Copy Before:=WBZiel.Sheets(4)
dieselbe Fehlermeldung wie zuvor.
AW: Tabellenblatt importieren
02.06.2017 10:42:55
yummi
hallo Sandra,
gib mal bitte vor der zeile ein:

dim i as integer
for i = 1 to WBZiel.sheets.count
debug.print "Sheet(" & i" & ")= " & WBZiel.Sheets(i).name
next i
Das gibt dir im Direktfenster im Debugger die Namen deiern Sheets aus.
Hast Du überhaupt ein Sheet(4)?
Ich kenne dien Datei ja nicht.
Gruß
yummi
Anzeige
AW: Tabellenblatt importieren
02.06.2017 10:56:33
Sandra
Hallo yummi,
ich habe wesentlich mehr als 4 Sheets, allerdings möchte ich ja, das Excel mir an vierter Stelle das kopierte Tabellenblatt neu einfügt. Muss zwingend ein leeres Tabellenblatt, mit Namen auf den ich mich beziehe, vorhanden sein?
Mal so dumm gefragt.
Gruß Sandra
AW: Tabellenblatt importieren
02.06.2017 11:24:27
yummi
Hallo Sandra,
ich hab das gerade mal nachgespielt und es geht.
Frage: Existiert in der von dir geöffneten Quelldatei ein Sheet mit dem Namen Tabelle1? (achte bitte auch auf evtl Leerzeichen am Ende)
Sonst geh mal Step by Step mit dem debugger durch und passe zur not zur laufzeit mal die Sheetnamen in deienm script an.
Gruß
yummi
Anzeige
AW: Tabellenblatt importieren
02.06.2017 11:57:24
Sandra
Ah ja, ein Leerzeichen übersehen ;)
Funktioniert!
Vielen, vielen Dank für deine Hilfe & Geduld :)
Ein schönes Wochenende und schöne Pfingsten!
;

Forumthreads zu verwandten Themen

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

Tabellenblatt importieren leicht gemacht


Schritt-für-Schritt-Anleitung

Um ein Excel-Tabellenblatt in Deine aktive Arbeitsmappe zu importieren, kannst Du das folgende VBA-Skript verwenden:

Sub kopieren()
    Dim WBZiel As Workbook, ExportDatei As Variant
    Dim WBQuelle As Workbook
    Set WBZiel = ThisWorkbook
    Application.ScreenUpdating = False
    ExportDatei = Application.GetOpenFilename("Excel-Dateien, *.xl*", , "Bitte die Datei zum Kopieren öffnen ...")
    If ExportDatei = "Falsch" Then Exit Sub
    Set WBQuelle = Workbooks.Open(ExportDatei)
    WBQuelle.Sheets("Tabelle1").Copy Before:=WBZiel.Sheets(4)
    WBZiel.Sheets(4).Name = "Druckschriften"
End Sub

Diese Schritt-für-Schritt-Anleitung zeigt Dir, wie Du ein bestimmtes Tabellenblatt importieren kannst. Achte darauf, dass das Tabellenblatt, das Du importieren möchtest, in der Quelldatei vorhanden ist.


Häufige Fehler und Lösungen

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

    • Dieser Fehler tritt auf, wenn Du versuchst, auf ein Tabellenblatt zuzugreifen, das nicht existiert. Stelle sicher, dass das Blatt "Tabelle1" in der Quelldatei vorhanden ist. Achte auch auf Leerzeichen im Namen.
  2. Falscher Verweis auf Arbeitsblätter

    • Wenn Du auf ein Arbeitsblatt zugreifen möchtest, benutze immer den richtigen Verweis. Statt Sheets("Tabelle1") solltest Du WBQuelle.Sheets("Tabelle1") verwenden.

Alternative Methoden

Neben VBA kannst Du auch die Excel-Funktion "Arbeitsblatt exportieren" verwenden, um ein Arbeitsblatt in eine andere Datei zu exportieren oder zu importieren. Gehe dazu auf die Registerkarte "Start", wähle "Verschieben oder Kopieren" und folge den Anweisungen.


Praktische Beispiele

Hier ist ein Beispiel für einen VBA-Code, um ein Tabellenblatt aus einer anderen Datei zu importieren:

Sub importTabellenblatt()
    Dim wbZiel As Workbook
    Dim wbQuelle As Workbook
    Dim dateipfad As String

    Set wbZiel = ThisWorkbook
    dateipfad = Application.GetOpenFilename("Excel-Dateien, *.xl*", , "Bitte die Datei auswählen")

    If dateipfad <> "Falsch" Then
        Set wbQuelle = Workbooks.Open(dateipfad)
        wbQuelle.Sheets("Tabelle1").Copy After:=wbZiel.Sheets(wbZiel.Sheets.Count)
        wbQuelle.Close False
    End If
End Sub

Mit diesem Skript kannst Du das Tabellenblatt "Tabelle1" aus einer anderen Datei importieren und es ans Ende Deiner Arbeitsmappe anhängen.


Tipps für Profis

  • Nutze Option Explicit am Anfang Deines Codes, um sicherzustellen, dass alle Variablen deklariert werden.
  • Verwende Debug.Print, um die vorhandenen Tabellenblattnamen im Direktfenster anzuzeigen. Dies hilft, Tippfehler zu erkennen.
  • Wenn Du oft Daten importieren musst, überlege, eine benutzerdefinierte Funktion zu erstellen, die den Prozess automatisiert.

FAQ: Häufige Fragen

1. Wie kann ich ein Excel-Arbeitsblatt exportieren?
Um ein Excel-Arbeitsblatt zu exportieren, kannst Du die Funktion "Verschieben oder Kopieren" verwenden oder ein VBA-Skript schreiben, das das Blatt in eine neue Datei kopiert.

2. Ist es möglich, mehrere Tabellenblätter gleichzeitig zu importieren?
Ja, Du kannst eine Schleife in Deinem VBA-Skript verwenden, um mehrere Tabellenblätter aus einer Datei zu importieren. Achte darauf, die Blätter korrekt zu referenzieren.

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