Microsoft Excel

Herbers Excel/VBA-Archiv

vba code Tabelle kopieren in neue Datei einfügen


Betrifft: vba code Tabelle kopieren in neue Datei einfügen von: Marvin W
Geschrieben am: 26.08.2016 09:51:22

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

  

Betrifft: AW: vba code Tabelle kopieren in neue Datei einf von: Michael (migre)
Geschrieben am: 26.08.2016 11:03:20

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


  

Betrifft: AW: vba code Tabelle kopieren in neue Datei einf von: Marvin W
Geschrieben am: 26.08.2016 11:36:21

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


  

Betrifft: AW: vba code Tabelle kopieren in neue Datei einf von: Michael (migre)
Geschrieben am: 26.08.2016 11:49:08

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


  

Betrifft: AW: vba code Tabelle kopieren in neue Datei einf von: Marvin W
Geschrieben am: 26.08.2016 12:20:10

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?


  

Betrifft: Sorry, das kann ich nicht nachvollziehen... von: Michael (migre)
Geschrieben am: 26.08.2016 12:36:37

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


Beiträge aus den Excel-Beispielen zum Thema "vba code Tabelle kopieren in neue Datei einfügen"