Microsoft Excel

Herbers Excel/VBA-Archiv

VBA_zeilen in txt


Betrifft: VBA_zeilen in txt von: Carina
Geschrieben am: 11.09.2019 13:34:54

Hallo,

mein Name ist Carina und ich schreibe gerade an meiner Masterarbeit, leider war diese nicht auf so viel Programmieren ausgelegt wie es gerade stattfindet.

Ich scheitere an folgendem Problem.

Ich habe ein Excel mit mehreren Spalten und Zeilen. Für jede Steinnummer (Spalte A) gibt es mehrere Zeilen. Ziel ist es für jede Steinnummer eine txt Datei zu haben die Start.Datum, End.Datum und Transportweite beinhaltet, wo die Spalten durch Tapstopps getrennt sind.

Ich hab euch die Datei hier hochgeladen
https://www.herber.de/bbs/user/131975.xlsx

Falls irgendetwas noch unverständlich ist einfach fragen ich stecke schon so in der Materie, dass es für mich so selbstverständlich ist.

Vielen lieben Dank.

Liebe Güße,

Carina Wittberger

  

Betrifft: AW: VBA code von: 1712466.html
Geschrieben am: 11.09.2019 14:22:38

Hallo Carina,

der Code ist wenig getestet, also bitte zuerst an wenigen Beispielen prüfen:

       Sub F_en()
       Stein = 0
       Pfad = "c:\temp\"
       
       For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
           If Cells(i, 1) <> Stein Then
               Stein = Cells(i, 1)
               On Error Resume Next
               Close #1
               Err.Clear
               Open Pfad & Cells(i, 1) & ".txt" For Append As #1
                   Print #1, Cells(i, 2) & Chr(9) & Cells(i, 3) & Chr(9) & Cells(i, 6)
           Else
               Print #1, Cells(i, 2) & Chr(9) & Cells(i, 3) & Chr(9) & Cells(i, 6)
           End If
       Next i
       End Sub
       
mfg
  

Betrifft: AW: VBA code von: 1712467.html
Geschrieben am: 11.09.2019 14:30:33

Hallo,

wow das ging aber schnell.

Und wie schaff ich es dann noch, dass jede Datei mit der jeweiligen Steinnumer beschriftet wird?

Besten Dank im Voraus.

Lg,
Carina

  

Betrifft: AW: das ist so eingestellt von: 1712468.html
Geschrieben am: 11.09.2019 14:35:07

Hallo,

der Dateiname ist die Zahl der Spalte 1 mit ".txt". Dies steht im "Open"-Befehl.

mfg

  

Betrifft: AW: das ist so eingestellt von: 1712469.html
Geschrieben am: 11.09.2019 14:39:11

ahh ok danke macht sinn!

Danke danke danke

  

Betrifft: AW: VBA code von: 1712521.html
Geschrieben am: 11.09.2019 17:42:25

Hallo Fennec
Super Dein Makro!

Ich habe allerdings ein Problem:
Vom letzten "Stein" der Excel-Datei wird zwar eine txt-Datei erstellt. Sie bleibt aber leer.
Dazu kommt: Wenn ich diese letzte Datei (90764.txt) im Windows-Explorer löschen will, erhalte ich die Meldung: "Datei wird verwendet. Die Aktion kann nicht abgeschlossen werden, da die Datei in Microsoft Excel geöffnet ist."
Ich habe den Pfad angepasst: Statt Pfad = "c:\temp\" steht bei mir im Makro:
Pfad = "D:\TestSteine\"

Wie muss man da vorgehen? Irgendwie mit "Exit Sub"?

Und dann noch eine Frage - reine Neugierde:
Ich möchte als letzte Zeile in jeder txt-Datei einen Text einfügen, z. B. "Dieser Stein ist hiermit erledigt."
Wie müsste man da vorgehen?

Vielen Dank und viele Grüsse
Niclaus

  

Betrifft: AW: VBA code (Zusatz) von: 1712522.html
Geschrieben am: 11.09.2019 17:47:59

Hallo,

die Einwände stimmen, ich hatte nur die ersten 4 Steine getestet damit die Festplatte nicht "zugemüllt" wird.

Ungeprüft:

  Sub F_en()
  Stein = 0
  Pfad = "c:\temp\"
  
  For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
      If Cells(i, 1) <> Stein Then
          Stein = Cells(i, 1)
          On Error Resume Next
  	print #1, "Dieser Stein ist hiermit erledigt."
          Close #1
          Err.Clear
  	on error goto 0
  
          Open Pfad & Cells(i, 1) & ".txt" For Append As #1
              Print #1, Cells(i, 2) & Chr(9) & Cells(i, 3) & Chr(9) & Cells(i, 6)
      Else
          Print #1, Cells(i, 2) & Chr(9) & Cells(i, 3) & Chr(9) & Cells(i, 6)
      End If
  Next i
  close #1
  End Sub
  
mdf
  

Betrifft: AW: VBA code (Zusatz) von: 1712560.html
Geschrieben am: 11.09.2019 21:06:08

Hallo Fennec

Vielen Dank! Ich habe mir zwar fast den Kopf zerbrochen. Wie geht das:
print #1, "Dieser Stein ist hiermit erledigt."
steht ganz am Anfang des Makros; in der txt-Datei erscheint diese Zeile trotzdem erst am Schluss. Ich hab's "durchschaut"!

Ich habe dann das Makro ganz am Schluss noch ergänzt:

...
 Next i
 Print #1, "Dieser Stein ist hiermit erledigt."
 Close #1
 End Sub
 
Jetzt wird diese erledigt-Zeile auch in die txt-Datei des letzten Steines eingefügt.

Noch einmal herzlichen Dank! Niclaus
  

Betrifft: AW: VBA code (Zusatz) von: 1712577.html
Geschrieben am: 12.09.2019 07:34:38

Danke noch für die Anmerkung.

Ich hab einfach getrixt und am Schluss noch eine fiktive Zeile eingefügt und die dann am Schluss wieder gelöscht.

Lg und schönen Vormittag,

Carina