Exportieren Sie eine Office Excel-Tabelle mithilfe eines Makros in eine CSV-Datei.

Exportieren Sie eine Office Excel-Tabelle mithilfe eines Makros in eine CSV-Datei.

Ich verwende Excel-Tabellen in Excel 2010. Ich möchte den Inhalt dieser Tabellen schnell in *.csv exportieren.

Mein aktueller Workflow: 1. Tabelle manuell auswählen 2. Inhalt in neues Arbeitsbuch kopieren 3. Arbeitsbuch als *.csv Datei speichern

Gewünschter Workflow: 1. Tabelle manuell auswählen 2. Makro ausführen, das in eine vordefinierte Datei schreibt

Da die Tabellen eindeutige Namen haben (z. B. CurrentDataTable), gibt es eine Funktion, die den Tabellennamen, die Zieldatei und das gewünschte Ausgabeformat übernimmt und die Ausgabedatei schreibt?

Antwort1

Es gibt keinen integrierten Excel-Befehl oder keine integrierte Funktion, die das von Ihnen gewünschte Ergebnis liefert, Sie können es jedoch mit VBA programmieren.

Der folgende Code könnte dem von Ihnen gesuchten Code ähneln:

Sub ExportTable()

    Dim wb As Workbook, wbNew As Workbook
    Dim ws As Worksheet, wsNew As Worksheet
    Dim wbNewName As String


   Set wb = ThisWorkbook
   Set ws = ActiveSheet

   Set wbNew = Workbooks.Add

   With wbNew
       Set wsNew = wbNew.Sheets("Sheet1")
       wbNewName = ws.ListObjects(1).Name
       ws.ListObjects(1).Range.Copy
       wsNew.Range("A1").PasteSpecial Paste:=xlPasteAll
       .SaveAs Filename:=wb.Path & "\" & wbNewName & ".csv", _
             FileFormat:=xlCSVMSDOS, CreateBackup:=False
   End With

End Sub

Der Code geht davon aus, dass Sie in jedem Arbeitsblatt eine Tabelle haben. Er erstellt eine neue Arbeitsmappe, kopiert die Tabelle in Blatt 1 dieser Arbeitsmappe und speichert die Arbeitsmappe als CSV-Datei unter demselben Namen wie die Tabelle.

Antwort2

Hier ist meine Version von Chuffs Antwort für Excel 2013. Sie deaktiviert auch die modalen Dialoge:

Sub ExportCSV()

   Dim wb As Workbook, wbNew As Workbook
   Dim ws As Worksheet, wsNew As Worksheet

   Set wb = ThisWorkbook
   Set ws = ActiveSheet

   Set wbNew = Workbooks.Add
   Application.DisplayAlerts = False
   With wbNew
       Set wsNew = wbNew.Sheets("Sheet1")
       ws.Rows.Copy
       wsNew.Paste
       .SaveAs Filename:=ws.name & ".csv", FileFormat:=xlCSV, CreateBackup:=True
       wsNew.Delete
   End With
   Windows(ws.name & ".csv").Activate
   ActiveWindow.Close
   Application.DisplayAlerts = True

End Sub

Antwort3

Ich musste dasselbe tun, musste aber angeben, welche Tabellen als CSV-Dateien exportiert werden sollten. Ich habe mit VBA einen Bereich mit dem Namen „ExportTables“ erstellt, und zwar wie folgt:

Public Sub Export()
    Dim i       As Integer
    Dim iMax    As Integer
    Dim sTable  As String

    iMax = Range("ExportTables").Rows.Count

    For i = 1 To iMax
        sTable = Range("ExportTables").Cells(i, 1).Value
        Call ExportTable(sTable)
    Next i
End Sub

Public Sub ExportTable(tableName As String)
    Dim wkb         As Workbook
    Dim wkbNew      As Workbook
    Dim wks         As Worksheet
    Dim wksNew      As Worksheet

    Set wkb = ThisWorkbook

    Application.Goto Reference:=tableName
    Set wks = ActiveSheet

    Set wkbNew = Workbooks.Add
    Set wksNew = wkbNew.Sheets(1)

    wks.ListObjects(tableName).Range.Copy
    wksNew.Range("A1").PasteSpecial Paste:=xlPasteValues

    Application.DisplayAlerts = False

    wkbNew.SaveAs Filename:=wkb.Path & "\" & tableName & ".csv", _
        FileFormat:=xlCSV, CreateBackup:=False
    wkbNew.Close SaveChanges:=False

    Application.DisplayAlerts = True

    ' Release object variables.
    Set wkb = Nothing
    Set wkbNew = Nothing
    Set wks = Nothing
    Set wksNew = Nothing
End Sub

Antwort4

Ich habe einen 1004-Fehler vom obigen Code erhalten. Löschen in Thorstens Code. Ich habe es zusammengeführt mitdieses Beispielund habe das hier bekommen, was bei mir funktioniert:

Sub ExportCSV2()

   Dim wb As Workbook, wbNew As Workbook
   Dim ws As Worksheet, wsNew As Worksheet

   Set wb = ThisWorkbook
   Set ws = ActiveSheet

   Application.DisplayAlerts = False

   ws.Copy
   ActiveWorkbook.SaveAs Filename:=ws.Name & ".csv", FileFormat:=xlCSV, CreateBackup:=True
   Windows(ws.Name & ".csv").Activate
   ActiveWorkbook.Close False
   Application.DisplayAlerts = True

End Sub

Bitte beachten Sie, dass bei diesem (Thorstens) Ansatz das gesamte Blatt und nicht nur die Tabelle exportiert wird, sodass Sie SEHR VIELE leere Zeilen erhalten.

verwandte Informationen