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

Forumthread: vba code Tabelle kopieren in neue Datei einfügen

vba code Tabelle kopieren in neue Datei einfügen
26.08.2016 09:51:22
Marvin
Hallo,
ich benötige ein Vba-Code/Makro das in meiner Excel Datei 1(xls Format), das 3 Tabellenblatt kopiert (nur die Werte), dann eine neue Exceldatei erstellt(Datei 2 im csv Format), die nur ein Tabellenblatt hat mit diesen Daten. Die Datei 1 soll dann geschlossen werden und die Werte aus Tabellenblatt 3 gelöscht werden(aber die Formeln sollen erhalten bleiben, wenn das nicht geht dann die Werte aus Tabellenblatt 2 löschen, diese sind ohne Formel und Tabellenblatt 3 basiert auf den Werten von Tabellenblatt 2). Die neu erstellte Datei 2 sollte wie gesagt im csv Format sein und unter einem bestimmten Pfad gespeichert werden.
Ich hoffe ich habe mich verständlich ausgedrückt und bin für jede Antwort, Dankbar.
Gruß
Marvin
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: vba code Tabelle kopieren in neue Datei einf
26.08.2016 11:03:20
Michael
Hallo!
Sub a()
'#### anpassen ####
Const SP_PFAD As String = "C:\Verzeichnis\Ordner\"
Const SP_NAME As String = "CSVexport"
'#### Ende ####
Dim WbQ As Workbook
Dim WbZ As Workbook
Dim WsQ As Worksheet
Dim WsZ As Worksheet
Set WbQ = ThisWorkbook
Set WsQ = WbQ.Worksheets(3)
Set WbZ = Workbooks.Add
Set WsZ = WbZ.Worksheets(1)
WsQ.UsedRange.Copy
WsZ.Cells(1, 1).PasteSpecial xlPasteValuesAndNumberFormats
WbQ.Worksheets(2).UsedRange.Clear
WbQ.Close True
WbZ.SaveAs Filename:=SP_PFAD & SP_NAME, FileFormat:=6
WbZ.Close True
End Sub
LG
Michael
Anzeige
AW: vba code Tabelle kopieren in neue Datei einf
26.08.2016 11:36:21
Marvin
Hallo Michael,
danke für deine Antwort. Habe es gerade mal probiert. Die Tabelle wird einwandfrei kopiert und die alte gelöscht und geschlossen wie es sein soll*Daumen hoch*. Allerdings enthält die neue Mappe 3 Tabellen, statt nur dieser einen mit Werten und die wird komischerweise nicht gespeichert, trotz Anpassung des Pfades. Hast du eine Erklärung dafür? Danke
Anzeige
AW: vba code Tabelle kopieren in neue Datei einf
26.08.2016 11:49:08
Michael
Hallo!
Allerdings enthält die neue Mappe 3 Tabellen
Ja, ich habe ignoriert, dass ich beim Erstellen neuer Mappen immer nur ein Blatt anlegen lasse, der Standardwert ist aber 3 - das dürftest Du nicht geändert haben (in den Optionen).
Abhilfe schafft hier entweder besagte Option zu ändern, oder Du wirfst alle Blätter außer #1 in der Ziel-Mappe raus, also dann so ergänzt
Sub a()
'#### anpassen ####
Const SP_PFAD As String = "C:\Verzeichnis\Ordner\"
Const SP_NAME As String = "CSVexport"
'#### Ende ####
Dim WbQ As Workbook
Dim WbZ As Workbook
Dim WsQ As Worksheet
Dim WsZ As Worksheet
Dim i&
Set WbQ = ThisWorkbook
Set WsQ = WbQ.Worksheets(3)
Set WbZ = Workbooks.Add
Set WsZ = WbZ.Worksheets(1)
WsQ.UsedRange.Copy
WsZ.Cells(1, 1).PasteSpecial xlPasteValuesAndNumberFormats
WbQ.Worksheets(2).UsedRange.Clear
WbQ.Close True
Application.DisplayAlerts = False
For i = 2 To WbZ.Worksheets.Count: WbZ.Worksheets(i).Delete: Next i
Application.DisplayAlerts = True
WbZ.SaveAs Filename:=SP_PFAD & SP_NAME, FileFormat:=6
WbZ.Close True
End Sub
wird komischerweise nicht gespeichert
Kann ich so noch nicht nachvollziehen, klappt bei mir einwandfrei. Endet Deine Pfadangabe auch mit einem "\"?
LG
Michael
Anzeige
AW: vba code Tabelle kopieren in neue Datei einf
26.08.2016 12:20:10
Marvin
Hallo,
irgendwie merkwürdig. Selbst mit der neuen Formel gibt es keine Veränderung. Es öffnet sich nur eine Datei, die Mappe 1 heißt und Tabelle 1 (in der meine Daten drin sind) Tabelle 2 (leer) Tabelle 3 (leer) beinhaltet.
Habe beim Dateipfad auf das Backslash geachtet. Habe die Formel in Tabellenblatt 3 über Codeanzeigen eingefügt (ist doch richtig oder). Vielleicht hängt es auch damit zusammen, das Tabellenblatt 3 die Werte durch Formeln aus einem anderen Blatt bekommt?
Anzeige
Sorry, das kann ich nicht nachvollziehen...
26.08.2016 12:36:37
Michael
Marvin!
Habe die Formel in Tabellenblatt 3 über Codeanzeigen eingefügt
Es handelt sich a) um keine Formel, sondern ein Makro und b) nein, der Code muss in der Quell-Mappe (aus der Du dann das eine Daten-Blatt in eine CSV exportieren möchtest) in ein allgemeines Modul. D.h. in der Quell-Mappe den VB-Editor mit Alt + F11 aufrufen -- Einfügen -- Modul; im rechten Fenster dann den Code einfügen.
Vielleicht hängt es auch damit zusammen, das Tabellenblatt 3 die Werte durch Formeln aus einem anderen Blatt bekommt
Dein Problem ist aktuell, das Speichern des exportierten Blattes als CSV, so ich das verstanden habe. Mit Blattformeln hat das nichts zu tun; unabhängig davon übernehme ich die Werte Deines Tabellenblatt3 direkt und nicht die Formeln - es werden die angezeigten Werte in das neue Blatt eingefügt.
Der Code ist von mir getestet und funktioniert bei mir einwandfrei; evtl. lad noch eine Bsp-Mappe hoch, anders kann ich nicht helfen, weil ich nicht weiß, was Du genau machst.
LG
Michael
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

VBA Code zum Kopieren einer Tabelle in eine neue Datei


Schritt-für-Schritt-Anleitung

  1. Öffne den Visual Basic Editor: Drücke Alt + F11, um den VB-Editor zu öffnen.

  2. Modul einfügen: Gehe zu Einfügen > Modul, um ein neues Modul zu erstellen.

  3. Code einfügen: Kopiere den folgenden VBA-Code in das Modul:

    Sub a()
    '#### anpassen ####
    Const SP_PFAD As String = "C:\Verzeichnis\Ordner\"
    Const SP_NAME As String = "CSVexport"
    '#### Ende ####
    Dim WbQ As Workbook
    Dim WbZ As Workbook
    Dim WsQ As Worksheet
    Dim WsZ As Worksheet
    Dim i
    Set WbQ = ThisWorkbook
    Set WsQ = WbQ.Worksheets(3)
    Set WbZ = Workbooks.Add
    Set WsZ = WbZ.Worksheets(1)
    WsQ.UsedRange.Copy
    WsZ.Cells(1, 1).PasteSpecial xlPasteValuesAndNumberFormats
    WbQ.Worksheets(2).UsedRange.Clear
    WbQ.Close True
    Application.DisplayAlerts = False
    For i = 2 To WbZ.Worksheets.Count: WbZ.Worksheets(i).Delete: Next i
    Application.DisplayAlerts = True
    WbZ.SaveAs Filename:=SP_PFAD & SP_NAME, FileFormat:=6
    WbZ.Close True
    End Sub
  4. Anpassungen vornehmen: Ersetze den SP_PFAD durch den gewünschten Speicherort.

  5. Makro ausführen: Schließe den Editor und führe das Makro über Entwicklertools > Makros aus.


Häufige Fehler und Lösungen

  • Problem: Die neue Datei enthält mehrere Tabellenblätter.

    • Lösung: Stelle sicher, dass das Makro die zusätzlichen Blätter entfernt, wie im obigen Code gezeigt.
  • Problem: Datei wird nicht gespeichert.

    • Lösung: Überprüfe, ob der Pfad mit einem Backslash (\) endet und ob der Pfad korrekt ist.
  • Problem: Keine Werte in der neuen Datei.

    • Lösung: Stelle sicher, dass die Daten in Tabellenblatt 3 vorhanden sind und korrekt formatiert sind.

Alternative Methoden

Wenn VBA nicht die gewünschte Lösung bietet, kannst du auch folgende Methoden ausprobieren:

  1. Manuelles Kopieren: Kopiere die Werte aus Tabellenblatt 3 und füge sie manuell in ein neues Excel-Dokument ein.
  2. Power Query: Nutze Power Query, um Daten aus verschiedenen Tabellenblättern in eine neue Datei zu importieren.

Praktische Beispiele

Hier sind einige Anwendungsbeispiele für den VBA-Code:

  • Export von Verkaufsdaten: Verwende den Code, um Verkaufsdaten aus einem Monat zu exportieren und in einem CSV-Format zu speichern.
  • Kopieren von Rechnungsdaten: Kopiere Rechnungsdaten in eine neue Datei, um die Daten für die Buchhaltung bereitzustellen.

Tipps für Profis

  • Optimierung des Codes: Reduziere die Laufzeit des Makros, indem du unnötige Berechnungen während der Ausführung deaktivierst:

    Application.Calculation = xlCalculationManual
  • Verwendung von Variablen: Definiere Variablen für häufig verwendete Werte, um den Code übersichtlicher zu gestalten.

  • Fehlerbehandlung einfügen: Implementiere Fehlerbehandlungsroutinen, um unerwartete Probleme während der Ausführung zu vermeiden.


FAQ: Häufige Fragen

1. Was ist der Unterschied zwischen xlPasteValues und xlPasteValuesAndNumberFormats?
xlPasteValues kopiert nur die Werte, während xlPasteValuesAndNumberFormats auch die Formatierungen übernimmt.

2. Kann ich den Code für andere Excel-Versionen verwenden?
Ja, der VBA-Code sollte in den meisten Excel-Versionen funktionieren, die VBA unterstützen, z.B. Excel 2010 und neuer.

3. Wie kann ich den Code anpassen, um mehrere Blätter zu exportieren?
Du kannst eine Schleife verwenden, um mehrere Arbeitsblätter zu durchlaufen und sie in die neue Datei zu kopieren.

4. Was passiert, wenn ich den falschen Pfad angebe?
Wenn du einen falschen Pfad angibst, wird das Makro mit einem Laufzeitfehler abbrechen. Achte darauf, dass der Pfad existiert und korrekt ist.

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