Microsoft Office Forum [ www.Office-Fragen.de ] >> READONLY <<

Microsoft Office 2003-2019 => Excel => Thema gestartet von: PrinzPolo am August 19, 2015, 13:44:31 Nachmittag

Titel: Tabelle aus Mappe per VBA in Textdatei überführen
Beitrag von: PrinzPolo am August 19, 2015, 13:44:31 Nachmittag
Moin!

Wie ist es (auf möglich einfache Art und Weise) möglich per VBA (und dann einer mit dem Custom UI Editor hinzugefügten Schaltfläche) eine Tabelle in eine externe .txt Datei zu speichern?
Der Button steht, es fehlt nur noch das Makro. Beim bisherigen Code ist das Problem, dass immer der Inhalt des Blattes gespeichert wird auf dem man aktuell ist. Es soll aber immer nur ein bestimmtes Blatt gespeichert werden. Der Code bis jetzt (hab viel ausprobiert, deswegen ist er u.a. etwas durcheinander):
Sub StauplanSpeichern(control As IRibbonControl)
    Dim Dateiname As String
    Dim Zeile As Long
    Dim Spalte As Integer
    Dim GanzeZeile As String
    Dim Trennzeichen As String
    ' Hier wird der Dateipfad - und -name festgelegt:
    Dateiname = ThisWorkbook.Path & Application.PathSeparator & "Text-Export.txt"
    Zeile = 1
    Spalte = 1
    Trennzeichen = Chr(9) ' Chr(9) = Tabulator
    Open Dateiname For Output As 1
    ' Alle benutzten Zeilen der aktiven Tabelle werden durchlaufen
    For Zeile = 1 To Worksheets("Stauplan").UsedRange.Rows.Count
        ' Alle benutzten Spalten der aktiven Tabelle werden durchlaufen
        For Spalte = 1 To Worksheets("Stauplan").UsedRange.Columns.Count
            ' Werte der Zellen werden zusammengefügt, getrennt durch Tabstopps
            GanzeZeile = GanzeZeile & Trennzeichen & Cells(Zeile, Spalte).Value
        Next Spalte
        ' die ganze Zeile wird in die Datei geschrieben
        Print #1, GanzeZeile
        GanzeZeile = ""
    Next Zeile
    Close #1
End Sub

Vielen Dank schonmal!

Gruß PrinzPolo
Titel: Antw: Tabelle aus Mappe per VBA in Textdatei überführen
Beitrag von: losgehts am August 29, 2015, 13:41:49 Nachmittag
Hallo,

Zitat
Der Button steht, es fehlt nur noch das Makro. Beim bisherigen Code ist das Problem, dass immer der Inhalt des Blattes gespeichert wird auf dem man aktuell ist.
Ich habe deinen Code nicht getestet, doch mit "Cells(..,..) sprichst du eine Zelle des aktiven Tabellenblattes an.
Mit "Worksheets("Stauplan").Cells(...,...)" sprichst du hingegen eine Zelle des Tabellenblattes "Stauplan" an.


Also einfach diese eine Codezeile von:            ' Werte der Zellen werden zusammengefügt, getrennt durch Tabstopps
            GanzeZeile = GanzeZeile & Trennzeichen & Cells(Zeile, Spalte).Value
in            ' Werte der Zellen werden zusammengefügt, getrennt durch Tabstopps
            GanzeZeile = GanzeZeile & Trennzeichen & Worksheets("Stauplan").Cells(Zeile, Spalte).Value
ändern.

Und, erhälst du das gewünschte Ergebnis?
Grüße, Ulrich