
Ich möchte .txt file
für jeden Wert in eine column A
Datei mit den entsprechenden Werten in erstellen.columns B and C
Antwort1
Je mehr ich mir das ansah, desto nützlicher fand ich es als kleines Makro. Um zu verhindern, dass leere Zeilen verarbeitet werden (und mein Excel blockiert), habe ich den Code so umgeschrieben, dass nur dann eine Datei erstellt wird, wenn Daten verfügbar sind. Außerdem erstellt die Verwendung von „of“ print
anstelle von „than“ write
Text ohne Anführungszeichen. Hier ist, was ich verwendet habe, um dasselbe zu erreichen.
Sub CreateFile()
Do While Not IsEmpty(ActiveCell.Offset(0, 1))
MyFile = ActiveCell.Value & ".txt"
'set and open file for output
fnum = FreeFile()
Open MyFile For Output As fnum
'use Print when you want the string without quotation marks
Print #fnum, ActiveCell.Offset(0, 1) & " " & ActiveCell.Offset(0, 2)
Close #fnum
ActiveCell.Offset(1, 0).Select
Loop
End Sub
Fühlen Sie sich frei, es nach Belieben zu verwenden und zu ändern. Danke für die tolle Idee.
Antwort2
Dieses Makro nimmt jeden Wert in column A
, erzeugt ein .txt document
im Namen des Wertes und fügt die entsprechenden Informationen aus eincolumns B and C
Sub CreateTxt()
'
For Each ce In Range("A1:A" & Cells(Rows.Count, 1).End(xlDown).Row)
Open ce & ".txt" For Output As #1
Write #1, ce.Offset(0, 1) & " " & ce.Offset(0, 2)
Close #1
Next ce
End Sub
Vier Jahre später habe ich beschlossen, zu meiner ersten SU-Frage zurückzukehren – meinen Anfängen in VBA. Das ist besser, überschreibt aber alle bereits vorhandenen Dateien
Option Explicit
Sub CreateFileEachLine()
Dim myPathTo As String
myPathTo = "C:\Users\path\to\"
Dim myFileSystemObject As Object
Set myFileSystemObject = CreateObject("Scripting.FileSystemObject")
Dim fileOut As Object
Dim myFileName As String
Dim lastRow As Long
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
Dim i As Long
For i = 1 To lastRow
If Not IsEmpty(Cells(i, 1)) Then
myFileName = myPathTo & Cells(i, 1) & ".txt"
Set fileOut = myFileSystemObject.CreateTextFile(myFileName)
fileOut.write Cells(i, 2) & " " & Cells(i, 3)
fileOut.Close
End If
Next
Set myFileSystemObject = Nothing
Set fileOut = Nothing
End Sub