Excel - Erstellt eine Textdatei, die nach einer Zelle benannt ist, die andere Zellendaten enthält

2

Ich suche nach einer .txt file für jeden Wert in column A mit den entsprechenden Werten in columns B and C

Raystafarian
quelle

Antworten:

1

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.

CharlieRB
quelle
0

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
Raystafarian
quelle
Großartige Idee. Dieser Code hat die Textdateien für die Daten in zwei Zeilen erstellt, führt dann jedoch dazu, dass Excel nicht mehr reagiert. Die Linie 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.
CharlieRB
Das ist mir noch nicht passiert, aber ich denke, ich wähle es aus und verwende eine Tastenkombination, um das Makro auszuführen. Idealerweise sollte ich mein Sortiment erweitern, aber in letzter Zeit hat es sich zu stark verändert
Raystafarian
Zusätzlich können Sie es am unteren Rand und am unteren Rand beginnen lassen xlUp nach oben, um leere Blätter zu vermeiden. Ich bin offen für eine elegantere Lösung.
Raystafarian