access-vba
Crea file delimitato da testo in Access Vba
Ricerca…
introduzione
Alcune volte potrebbe essere necessario creare un file di testo delimitato per vari usi. Il seguente esempio è uno dei molti modi per aiutarti a farlo. Ho usato una pipe ("|") per il mio delimitatore, per cambiare basta cambiare l'assegnazione della variabile Sep. Nel mio esempio faccio il dump del recordset su un array, questo non è affatto l'approccio defacto, è solo il mio andare a. Questo può essere fatto facilmente anche usando il recordset stesso.
Osservazioni
Vale la pena segnalarlo:
Wholeline = Wholeline & aRR(i, j) & Sep
Poiché i recordset eseguono il dump su array trasposti, è necessario leggerli all'indietro nel file di testo. Questo è in realtà un po 'utile se stai lavorando con array dinamici, dato che è già trasposto per te, quindi è possibile eseguire il rediming del "conteggio delle righe" prima di qualsiasi sollevamento pesante.
Inoltre non vale niente:
Puoi facilmente trasporre la tua matrice scaricandola in una nuova riga per riga usando questa sintassi:
Dim xaRR() As String
ReDim xaRR(q, z)
xaRR(j, i) = aRR(i, j)
questo non è troppo rilevante per il mio post, ma vale la pena segnalarlo.
Esempio:
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