Ich suche nach einer .txt file
für jeden Wert in column A
mit den entsprechenden Werten in columns B and C
Ich suche nach einer .txt file
für jeden Wert in column A
mit den entsprechenden Werten in columns B and C
Antworten:
Je mehr ich mir das anschaute, desto mehr empfand ich es als nützliches kleines Makro. Um zu verhindern, dass leere Zeilen verarbeitet werden (und Excel gesperrt wird), habe ich den Code neu geschrieben, um nur eine Datei zu erstellen, solange Daten verfügbar sind. Auch die Verwendung von print
eher, als write
Erstellt einen Text ohne die Anführungszeichen. Hier ist, was ich verwendet habe, um das gleiche 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 zu verwenden und zu ändern, wie Sie möchten. Danke für die tolle Idee.
Dieses Makro nimmt jeden Wert auf column A
, produzier ein .txt document
Geben Sie im Namen des Werts die entsprechenden Informationen von ein columns 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 beschloss ich, auf meine erste SU-Frage zurückzukommen - meine Anfänge bei VBA. Dies ist besser, überschreibt jedoch 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
xlUp
nach oben, um leere Blätter zu vermeiden. Ich bin offen für eine elegantere Lösung.
For Each ce In Range("A1:A" & Cells(Rows.Count, 1).End(xlDown).Row)
Gibt mehr als eine Million Zeilen zurück, obwohl nur zwei Zeilen gefüllt sind.