access-vba
Skapa textavgränsad fil i Access Vba
Sök…
Introduktion
Vissa gånger kan du behöva skapa en avgränsad textfil för olika användningsområden. Följande exempel är ett av många sätt att hjälpa dig göra. Jag har använt ett rör ("|") för min avgränsare, för att ändra som bara ändrar tilldelningen av Sep-variabeln. I mitt exempel dumpar jag skivuppsättningen till en matris, detta är inte alls den defacto-metoden, det är bara min gå till. Detta kan enkelt göras även med själva skivsetet.
Anmärkningar
Detta är värt att påpeka:
Wholeline = Wholeline & aRR(i, j) & Sep
Eftersom registeruppsättningar dumpar till matriser som transponeras måste du läsa den till textfilen bakåt. Detta är faktiskt typiskt praktiskt om du arbetar med dynamiska matriser, eftersom det redan är införlivat för dig, så att "radräkning" kan göras om innan du kan lyfta tungt.
Också värt ingenting:
Du kan enkelt transponera din grupp genom att dumpa den till en ny rad för rad med hjälp av denna syntax:
Dim xaRR() As String
ReDim xaRR(q, z)
xaRR(j, i) = aRR(i, j)
detta är inte för relevant för mitt inlägg, men det är värt att påpeka.
Exempel:
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