Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
196to200
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
196to200
196to200
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Datensätze in einzelne Textdateien speichern

Datensätze in einzelne Textdateien speichern
30.12.2002 22:47:19
Christian
Hallo zusammen,

Ich möchte ähnlich der Word-Serienbrieffunktion vorhandene Datensätze aus einer Excel-Tabelle in einzelne txt-Dateien speichern. Jede Zelle des Datensatzes soll in einer seperaten Zeile der txt-Datei gelistet werden. In der letzten Zelle eines jeden Datensatzes ist der zu verwendende Dateiname für die erstellte txt-Datei enthalten. In folge werden so ca. 200 txt-Dateien erstellt.


9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Hokus Pokus Fidibus :-)
30.12.2002 23:05:59
Ramses
Hallo,

Da würden ein paar zusätzliche Informtionen hilfreich sein.

Wo stehen die Daten
Wie stehen die Daten ( vertikal oder horizontal )
Woher kommen die Dateinamen der txt-Dateien
Wo sollen die Daten gespeichert werden


Gruss Rainer

Hokus Pokus Fidibus :-)
30.12.2002 23:06:00
Ramses
Hallo,

Da würden ein paar zusätzliche Informtionen hilfreich sein.

Wo stehen die Daten
Wie stehen die Daten ( vertikal oder horizontal )
Woher kommen die Dateinamen der txt-Dateien
Wo sollen die Daten gespeichert werden


Gruss Rainer

Re: Hokus Pokus Fidibus :-)
30.12.2002 23:24:16
Christian
Hallo Rainer,

erst mal Danke für die schnelle Antwort.

Die Daten aller Datensätze befinden sich in einem Tabellenblatt. Jeder Datensatz ist horizontal aufgebaut und besteht aus vorraussichtlich 6 Datenzellen. Die Letzte Datenzelle enthält den für die jeweilige txt-Datei gewünschte Dateiname ohne die Endung .txt. Der Dateinamme wird von mir bei der Erfassung der gesamten Daten mit vergeben.
Das Speichern der txt-Dateien soll in einem fest vorgegebenen Verzeichnis erfolgen.

Nach abbarbeiten des ersten Datensatzes und speichern der txt-Datei wird automatisch der nächste Datensatz abgearbeitet, usw.

Danke für deine Mühe,

Gruß Christan

Anzeige
Re: Datensätze in einzelne Textdateien speichern
30.12.2002 23:40:35
Christian
Nochmals Hallo,

ich möchte meine Angaben noch etwas spezifizieren. In der Vergangenheit habe ich ähnliche Aufgaben wie folgt gelöst:

Datensätze in Excel erfaßt, wobei jeder Datensatz eine eigene Zeile erhält.
Anschließend in Word über Seriendruck mit der .xls verknüpft und in ein neues Dokument zusamengeführt. Bei richtig positioniertem SSeitenumbruch erhielt ich für jeden Datensatz eine seperate Seite.

Problem: Alle Datensätze befinden sich in einem Word-Dokument und ein abspeichern jeder einzelnen Seite in eine seperate .txt mit manueller Vergabe des Dateinamens ist bei der Menge an Datensätzen sehr Zeitintensiv.

Kann ich diese Funktion direkt aus Excel mit o.g. Ergebnis umsetzen?

Danke an alle, die sich hierüber den Kopf zerbrechen.

Gruß Christian

Anzeige
Hier das Makro :-))
31.12.2002 00:42:26
Ramses
Hallo Christian,

Du hast sicher Office XP?
Wenn ja, kopiere das Makro in deine Arbeitsmappe und lass es laufen:


Option Explicit
Sub Save_Datarows_at_txt_Files()
Dim Pfad As String, NewDrive As String
Dim i As Long, Cr As Long, Cc As Integer, DInt As Integer
Dim Suchdialog As FileDialog
Dim wkb As String, wks1 As String, txtName As String
Set Suchdialog = Application.FileDialog(msoFileDialogFolderPicker)
'Variablen füllen
Cr = 65536
Cc = 1
wkb = ActiveWorkbook.Name
wks1 = ActiveSheet.Name
'Öffnet einen Dialog indem der Pfad elegant wie im normalen
'Datei-Dialog gewählt werden kann.
With Suchdialog
    .Title = "Bitte wählen Sie ein Verzeichnis aus"
    'Environ(25) ermittelt den Aktuellen Userpfad
    .InitialFileName = Environ(25) & "\Eigene Dateien\"
    .ButtonName = "Auswahl übernehmen"
    .Show
        If .SelectedItems.Count = 0 Then
            MsgBox "Sie haben kein Verzeichnis ausgewählt", vbInformation
            Set Suchdialog = Nothing
            Exit Sub
        Else
            For DInt = 1 To 1
                Pfad = Pfad & .SelectedItems(DInt)
            Next DInt
        End If
        'Weil der komplette Pfad der Variable übergeben wurde
        'kann das Laufwerk extrahiert werden
        NewDrive = Left(Pfad, 3)
End With
'letzte Zelle der Datensätze suchen
If Cells(Cr, Cc) = "" Then
    Cr = Cells(Cr, Cc).End(xlUp).Row
End If
On Error GoTo txtError
Application.DisplayAlerts = False
Application.ScreenUpdating = False
For i = 1 To Cr
    txtName = Worksheets(wks1).Cells(i, Cc + 5) & ".txt"
    Workbooks.Add
    ActiveWorkbook.SaveAs Filename:=Pfad & "\" & txtName, FileFormat:=xlText, CreateBackup:=False
    Workbooks(wkb).Worksheets(wks1).Cells(i, Cc).Copy Destination:=Workbooks(txtName).Worksheets(1).Cells(i, Cc)
    Workbooks(wkb).Worksheets(wks1).Cells(i, Cc + 1).Copy Destination:=Workbooks(txtName).Worksheets(1).Cells(i + 1, Cc)
    Workbooks(wkb).Worksheets(wks1).Cells(i, Cc + 2).Copy Destination:=Workbooks(txtName).Worksheets(1).Cells(i + 2, Cc)
    Workbooks(wkb).Worksheets(wks1).Cells(i, Cc + 3).Copy Destination:=Workbooks(txtName).Worksheets(1).Cells(i + 3, Cc)
    Workbooks(wkb).Worksheets(wks1).Cells(i, Cc + 4).Copy Destination:=Workbooks(txtName).Worksheets(1).Cells(i + 4, Cc)
    Workbooks(txtName).Save
    Workbooks(txtName).Close
Next i
    
Checkout:
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Exit Sub

txtError:
MsgBox Err.Number & ": " & Err.Description
Resume Checkout

End Sub 

     Code eingefügt mit Syntaxhighlighter 1.16

Gruss Rainer

Anzeige
Re: Hier das Makro :-))
31.12.2002 14:14:16
Christian
Hervorragend!!!

Vielen Dank Rainer.
Das von Dir erstellte Makro funktioniert bestens. Genau sowas habe ich zur Lösung der doch recht zeitaufwändigen Arbeit gebraucht.

Ich kann nur sagen, "Hut ab".

Noch etwas. Das Forum mit den darin geführten Lösungen verleitet zum schmökern und hat mir schon einige Tipps aufgezeigt.

Ich wünsche allen Forumteilnehmer einen guten Rutsch ins neue Jahr und macht weiter so.

Mit freundlichen Grüßen

Christian

Re: Hier das Makro :-))
31.12.2002 15:46:57
Christian
Hallo Rainer,

habe noch ein kleines Problem mit Deinem Makro, sorry meine Aufgabenstellung war nicht richtig.

Das Ausspielen der Datensätze funktioniert hervorragend, jedoch möchte ich in jeder txt-Datei in jeder Zeile vor dem Eintrag der eigentlichen Daten noch einen Text eintragen. So soll vor dem ersten Dateneintrag in der selben Zeile folgender Text stehen: "1 = ". In der Zweiten Zeile "2 =" usw.
Beispiel: 1 = Inhalt aus Datenzelle 1
2 = Inhalt aus Datenzelle 2
3 = Inhalt aus Datenzelle 3
4 = Inhalt aus Datenzelle 4
5 = Inhalt aus Datenzelle 5

Zusätzlich habe ich in meiner Datentabelle die Spalte 5 als Datum im Format 31.12.2002 formatiert, bei der Ausgabe in der Text-Datei wird dies in 31/12/2002 dargestellt.

Kannst Du mir bei den o.g. Problemen helfen. Sorry, ist mir erst später eingefallen.

Danke für Deine Mühe

Gruss Christian

Anzeige
Neues Makro
31.12.2002 17:47:29
Ramses
Hallo,

Ist ungetestet,.. sollte aber funktionieren:-)


Option Explicit
Sub Save_Datarows_at_txt_Files()
'Daten stehen in einer Zeile und jede Zeile soll als Textdatei in einem
'frei wählbaren Verzeichnis gespeichert werden
'Der Dateiname steht in Spalte 6
Dim Pfad As String, NewDrive As String, Temp As Variant
Dim i As Long, Cr As Long, Cc As Integer, DInt As Integer
Dim Suchdialog As FileDialog
Dim wkb As String, wks1 As String, txtName As String
Set Suchdialog = Application.FileDialog(msoFileDialogFolderPicker)
'Variablen füllen
Cr = 65536
Cc = 1
wkb = ActiveWorkbook.Name
wks1 = ActiveSheet.Name
'Öffnet einen Dialog indem der Pfad elegant wie im normalen
'Datei-Dialog gewählt werden kann.
With Suchdialog
    .Title = "Bitte wählen Sie ein Verzeichnis aus"
    'Environ(25) ermittelt den Aktuellen Userpfad
    .InitialFileName = Environ(25) & "\Eigene Dateien\"
    .ButtonName = "Auswahl übernehmen"
    .Show
        If .SelectedItems.Count = 0 Then
            MsgBox "Sie haben kein Verzeichnis ausgewählt", vbInformation
            Set Suchdialog = Nothing
            Exit Sub
        Else
            For DInt = 1 To 1
                Pfad = Pfad & .SelectedItems(DInt)
            Next DInt
        End If
        'Weil der komplette Pfad der Variable übergeben wurde
        'kann das Laufwerk extrahiert werden
        NewDrive = Left(Pfad, 3)
End With
'letzte Zelle der Datensätze suchen
If Cells(Cr, Cc) = "" Then
    Cr = Cells(Cr, Cc).End(xlUp).Row
End If
On Error GoTo txtError
Application.DisplayAlerts = False
Application.ScreenUpdating = False
For i = 1 To Cr
    txtName = Worksheets(wks1).Cells(i, Cc + 5) & ".txt"
    Workbooks.Add
    ActiveWorkbook.SaveAs Filename:=Pfad & "\" & txtName, FileFormat:=xlText, CreateBackup:=False
    Temp = i & "= " & Workbooks(wkb).Worksheets(wks1).Cells(i, Cc)
    Workbooks(txtName).Worksheets(1).Cells(i, Cc) = Temp
    Temp = i + 1 & "= " & Workbooks(wkb).Worksheets(wks1).Cells(i, Cc + 1)
    Workbooks(txtName).Worksheets(1).Cells(i + 1, Cc) = Temp
    Temp = i + 2 & "= " & Workbooks(wkb).Worksheets(wks1).Cells(i, Cc + 2)
    Workbooks(txtName).Worksheets(1).Cells(i + 2, Cc) = Temp
    Temp = i + 3 & "= " & Workbooks(wkb).Worksheets(wks1).Cells(i, Cc + 3)
    Workbooks(txtName).Worksheets(1).Cells(i + 3, Cc) = Temp
    Temp = i + 4 & "= " & Format(Workbooks(wkb).Worksheets(wks1).Cells(i, Cc + 4))
    Workbooks(txtName).Worksheets(1).Cells(i + 4, Cc) = Temp
    Workbooks(txtName).Save
    Workbooks(txtName).Close
Next i
    
Checkout:
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Exit Sub

txtError:
MsgBox Err.Number & ": " & Err.Description
Resume Checkout

End Sub 

     Code eingefügt mit Syntaxhighlighter 1.16

Gruss Rainer

Anzeige
Perfekt
31.12.2002 18:23:27
Christian
Hallo Rainer,

es ist vollbracht.

Ich habe noch eine kleine Änderung an Deinem Makro durchgeführt, aber an sonsten ist Dein Makro perfekt.

Da bei jedem Durchlauf der Schleife die Variable i um eins höher zählt, und ich somit in den txt nur in der ersten Datei den Eintrag 1 habe, mußte ich Dein ansonsten perfektes Makro nur dahingehend verändern, daß ich einfach die Werte 1 bis 5 fest zugewiesen habe.

Nochmals recht herzlichen Dank und

wirklich perfekte Leistung.

Einen Guten Rutsch

Gruss Christian

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige