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

VBA-Daten export. u. importieren aus und in Excel

Forumthread: VBA-Daten export. u. importieren aus und in Excel

VBA-Daten export. u. importieren aus und in Excel
16.12.2006 13:14:03
Uwe
Hallo,
ich habe folgendes Problem:
Ich habe eine Exceldatei mit mehreren Tabellenblättern (27). Die Datei ist rd. 3 MB groß. Bestimmte Dateien müssen regelmäßig abgespeichert werden. Speichert man reglmäßig die 3 MB Datei ab, so sprengt das irgendwann die Festplattenkapazität.
Aus diesem Grund sollen lediglich 2 Tabellenblätter separat gespeichert werden. Alle anderen Tabellenblätter sind lediglich mit diesen beiden Tabellenblättern verknüpft, so dass deren Daten in der Exceldatei verbleiben können. Anschließend sollen die ausgelagerten Daten wieder importiert werden. Hierzu habe ich 2 Schaltflächen für VBA-Befehle vorgesehen. Wenn ich den Auslagerungsdateien feste Namen gebe, dann habe ich kein Problem, die Daten zu ex- und zu importieren. Jede Auslagerungsdatei soll jedoch einen anderen Namen erhalten (z.B Auslagerungsdatei 1, 2, 3, etc...). Ich habe mir daher vorgestellt, wie über den Befehl "speichern unter" bzw. "Datei öffnen" die Datenbereiche (Tabelle1: (A1:U300 und Tabelle7: B294:N1500) in den 2 Tabellen zu speichern und später wieder in das Ursprungstool einzufügen.
Ich habe leider recht wenig Ahnung mit der Programierung von Makros. Leichtere Sachen bekomme ich hin, dies übersteigt jedoch meinen Horizont. Dennoch würde ich dies gerne in dem Tool umsetzen. Ich hoffe Ihr könnt mir bei meinem Problem helfen.
Vielen Dank.
Gruß
Uwe
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: VBA-Daten export. u. importieren aus und in E
16.12.2006 20:24:19
Matthias
Hallo Uwe,
erster Teil (Export):

Sub Exportieren()
Dim fn As String
Dim wb_dest As Workbook, wb_new As Workbook
'Dateiname abfragen
fn = Application.GetSaveAsFilename(fileFilter:="Excel-Arbeitsmappe (*.xls), *.xls")
'Blätter in neue Mappe kopieren:
Application.ScreenUpdating = False
Set wb_dest = ActiveWorkbook
Sheets(Array("Tabelle2", "Tabelle7")).Copy
With ActiveWorkbook
.SaveAs Filename:=fn
.Close
End With
Application.ScreenUpdating = True
MsgBox "Blätter wurden exportiert."
End Sub

Jetzt hab ich aber erstmal keine Zeit mehr...
Gruß Matthias
Anzeige
AW: VBA-Daten export. u. importieren aus und in E
16.12.2006 21:48:18
Uwe
Hallo Matthias,
vielen Dank. Ich habe versucht, ausgehend von deinem Makro, ein Makro für den Import zu schreiben. Hierbei musste ich jedoch einen festen Namen beim Export definieren. Zumindest kann ich verschiedene Ordner auswählen. Die Vergabe eines festen Namens ermöglicht, dass ich zwischen den Dateien wechseln kann und aus der Auslagerungsdatei nur bestimmte Bereiche wieder in die Ursprungsdatei importieren kann.
Besser wäre natürlich ein frei wählbarer Name. Vielleicht kannst du ja das Makro noch ein wenig optimieren. Vielen Dank schon mal.
Anbei nochmals die Makros:
Option Explicit

Sub Exportieren()
Dim fn As String
Dim wb_dest As Workbook, wb_new As Workbook
'Dateiname abfragen
fn = Application.GetSaveAsFilename(InitialFilename:="Auslagerung.xls", _
fileFilter:="Excel-Arbeitsmappe (*.xls), *.xls")
'Blätter in neue Mappe kopieren:
Application.ScreenUpdating = False
Set wb_dest = ActiveWorkbook
Sheets(Array("Tabelle1", "Tabelle7")).Copy
With ActiveWorkbook
.SaveAs Filename:=fn
.Close
End With
Application.ScreenUpdating = True
End Sub


Sub importieren()
Dim fn As String
'Dateiname abfragen
fn = Application.GetOpenFilename(fileFilter:="Excel-Arbeitsmappe (*.xls), *.xls")
'Blätter in neue Mappe kopieren:
Application.ScreenUpdating = False
Workbooks.Open ("Auslagerung Gesamtobligo.xls")
Windows("Auslagerung.xls").Activate
Sheets("Tabelle1").Select
Range("C12:H36").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Transfer.xls").Activate
Sheets("Tabelle1").Select
Range("C12:H36").Select
ActiveSheet.Paste
Windows("Auslagerung.xls").Activate
Sheets("Tabelle7").Select
Range("C8:H25").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Transfer.xls").Activate
Sheets("Tabelle7").Select
Range("C8:H25").Select
ActiveSheet.Paste
MsgBox "Die Daten wurden erfolgreich Importiert!"
End Sub

Gruß
Uwe
Anzeige
AW: VBA-Daten export. u. importieren aus und in E
16.12.2006 21:51:28
Uwe
Hallo Matthias,
vielen Dank. Ich habe versucht, ausgehend von deinem Makro, ein Makro für den Import zu schreiben. Hierbei musste ich jedoch einen festen Namen beim Export definieren. Zumindest kann ich verschiedene Ordner auswählen. Die Vergabe eines festen Namens ermöglicht, dass ich zwischen den Dateien wechseln kann und aus der Auslagerungsdatei nur bestimmte Bereiche wieder in die Ursprungsdatei importieren kann.
Besser wäre natürlich ein frei wählbarer Name. Vielleicht kannst du ja das Makro noch ein wenig optimieren. Vielen Dank schon mal.
Anbei nochmals die Makros:
Option Explicit

Sub Exportieren()
Dim fn As String
Dim wb_dest As Workbook, wb_new As Workbook
'Dateiname abfragen
fn = Application.GetSaveAsFilename(InitialFilename:="Auslagerung.xls", _
fileFilter:="Excel-Arbeitsmappe (*.xls), *.xls")
'Blätter in neue Mappe kopieren:
Application.ScreenUpdating = False
Set wb_dest = ActiveWorkbook
Sheets(Array("Tabelle1", "Tabelle7")).Copy
With ActiveWorkbook
.SaveAs Filename:=fn
.Close
End With
Application.ScreenUpdating = True
End Sub


Sub importieren()
Dim fn As String
'Dateiname abfragen
fn = Application.GetOpenFilename(fileFilter:="Excel-Arbeitsmappe (*.xls), *.xls")
'Blätter in neue Mappe kopieren:
Application.ScreenUpdating = False
Workbooks.Open ("Auslagerung Gesamtobligo.xls")
Windows("Auslagerung.xls").Activate
Sheets("Tabelle1").Select
Range("C12:H36").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Transfer.xls").Activate
Sheets("Tabelle1").Select
Range("C12:H36").Select
ActiveSheet.Paste
Windows("Auslagerung.xls").Activate
Sheets("Tabelle7").Select
Range("C8:H25").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Transfer.xls").Activate
Sheets("Tabelle7").Select
Range("C8:H25").Select
ActiveSheet.Paste
MsgBox "Die Daten wurden erfolgreich Importiert!"
End Sub

Gruß
Uwe
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Daten exportieren und importieren mit VBA in Excel


Schritt-für-Schritt-Anleitung

Um Daten in Excel mit VBA zu exportieren und zu importieren, kannst du die folgenden Schritte befolgen:

  1. Öffne die Excel-Datei, in der du die Daten exportieren möchtest.

  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Füge ein neues Modul hinzu:

    • Klicke im Projektfenster mit der rechten Maustaste auf "VBAProject (deinWorkbookName)".
    • Wähle „Einfügen“ und dann „Modul“.
  4. Kopiere und füge den folgenden Code für den Export ein:

    Sub Exportieren()
       Dim fn As String
       Dim wb_dest As Workbook
       'Dateiname abfragen
       fn = Application.GetSaveAsFilename(fileFilter:="Excel-Arbeitsmappe (*.xls), *.xls")
       'Blätter in neue Mappe kopieren:
       Application.ScreenUpdating = False
       Set wb_dest = ActiveWorkbook
       Sheets(Array("Tabelle1", "Tabelle7")).Copy
       With ActiveWorkbook
           .SaveAs Filename:=fn
           .Close
       End With
       Application.ScreenUpdating = True
       MsgBox "Blätter wurden exportiert."
    End Sub
  5. Kopiere und füge den folgenden Code für den Import ein:

    Sub importieren()
       Dim fn As String
       'Dateiname abfragen
       fn = Application.GetOpenFilename(fileFilter:="Excel-Arbeitsmappe (*.xls), *.xls")
       'Blätter in neue Mappe kopieren:
       Application.ScreenUpdating = False
       Workbooks.Open fn
       'Daten in die Ursprungsdatei einfügen
       'Hier sollte der spezifische Bereich eingefügt werden
       'Anpassungen je nach Bedarf vornehmen
       MsgBox "Die Daten wurden erfolgreich importiert!"
    End Sub
  6. Schließe den VBA-Editor und kehre zu Excel zurück.

  7. Füge Schaltflächen hinzu und weise die Makros zu, um den Export und Import zu starten.


Häufige Fehler und Lösungen

  • Fehler: „Dateiname ungültig“

    • Lösung: Stelle sicher, dass du einen gültigen Dateinamen wählst und keine ungültigen Zeichen verwendest.
  • Fehler: „Das Arbeitsblatt kann nicht gefunden werden“

    • Lösung: Überprüfe die Namen der Tabellenblätter in deinem Code und stelle sicher, dass sie korrekt sind.
  • Fehler beim Importieren

    • Lösung: Achte darauf, dass die Datei, die du importieren möchtest, im richtigen Format gespeichert ist.

Alternative Methoden

Falls du keine VBA-Makros verwenden möchtest, kannst du die Daten auch manuell exportieren:

  1. Markiere den gewünschten Bereich in deiner Excel-Tabelle.
  2. Kopiere die Daten (STRG + C).
  3. Öffne eine neue Excel-Datei und füge die Daten ein (STRG + V).
  4. Speichere die Datei unter dem gewünschten Namen.

Praktische Beispiele

  • Beispiel für den Export eines bestimmten Bereichs: Wenn du nur einen bestimmten Bereich aus „Tabelle1“ exportieren möchtest, kannst du den Code wie folgt anpassen:

    Sheets("Tabelle1").Range("A1:U300").Copy
  • Beispiel für den Import von Daten aus einer bestimmten Datei: Um Daten aus einer Datei mit einem spezifischen Namen zu importieren, passe den Import-Code an:

    Workbooks.Open ("C:\Pfad\zu\deiner\Datei.xls")

Tipps für Profis

  • Verwende Variablen für dynamische Dateinamen, um die Benutzerfreundlichkeit zu erhöhen. Zum Beispiel:

    Dim dateiname As String
    dateiname = "Auslagerung_" & Format(Date, "YYYYMMDD") & ".xls"
  • Nutze Error-Handling, um sicherzustellen, dass dein Makro bei Fehlern nicht abstürzt:

    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 die Export- und Import-Makros anpassen?
Du kannst die Namen der Tabellenblätter und die gespeicherten Bereiche im Code ändern, um sie an deine Anforderungen anzupassen.

2. Muss ich VBA aktivieren, um diese Funktionen zu nutzen?
Ja, um Makros auszuführen, musst du sicherstellen, dass die Makros in den Excel-Optionen aktiviert sind.

3. Kann ich mehrere Tabellen gleichzeitig exportieren?
Ja, du kannst mehrere Tabellen gleichzeitig exportieren, indem du sie im Code im Array angibst, wie im Export-Beispiel gezeigt.

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