access-vba
Erstellen Sie mit Text getrennte Dateien in Access Vba
Suche…
Einführung
Manchmal müssen Sie möglicherweise eine Textdatei mit Trennzeichen für verschiedene Zwecke erstellen. Das folgende Beispiel ist eine von vielen Möglichkeiten, um Ihnen dabei zu helfen. Ich habe eine Pipe ("|") für mein Trennzeichen verwendet, um die Änderung der Sep-Variablen zu ändern. In meinem Beispiel entlade ich das Recordset in ein Array. Dies ist keinesfalls der defacto-Ansatz, es ist nur mein Ziel. Dies kann problemlos auch mit dem Recordset selbst durchgeführt werden.
Bemerkungen
Das ist es wert, darauf hinzuweisen:
Wholeline = Wholeline & aRR(i, j) & Sep
Da Recordsets in Arrays versetzt werden, müssen Sie sie rückwärts in die Textdatei lesen. Dies ist wirklich praktisch, wenn Sie mit dynamischen Arrays arbeiten, da diese bereits für Sie transponiert sind. Das Redim'ing der "Zeilenanzahl" kann also vor jedem schweren Hub erfolgen.
Auch nichts wert:
Sie können Ihr Array leicht transponieren, indem Sie es mit dieser Syntax zeilenweise in ein neues ausgeben:
Dim xaRR() As String
ReDim xaRR(q, z)
xaRR(j, i) = aRR(i, j)
das ist nicht zu relevant für meinen Beitrag, aber es lohnt sich, darauf hinzuweisen.
Beispiel:
Private Sub this()
Dim rs As DAO.Recordset
Dim q%: Dim z%
Set rs = CurrentDb.OpenRecordset("SELECT * FROM Invoice;")
With rs
rs.MoveLast
q = rs.RecordCount
rs.MoveFirst
z = rs.Fields.Count
End With
Dim aRR As Variant
aRR = rs.GetRows(q)
Dim i%: Dim j%: Dim counter#: Dim Sep$: Dim Wholeline$: Dim NewTextFile$: Dim path$: Dim fileNameV$
Sep = "|"
path = Environ("USERPROFILE") & "\Desktop" & "\"
fileNameV = "Text007.txt"
NewTextFile = path & fileNameV
Open NewTextFile For Output As #2
For j = LBound(aRR, 2) To UBound(aRR, 2)
For i = LBound(aRR, 1) To UBound(aRR, 1)
Wholeline = Wholeline & aRR(i, j) & Sep
Next i
Print #2, Wholeline
Wholeline = vbNullString
Next j
Close #2
rs.Close
Set rs = Nothing
Erase aRR
End Sub