access-vba
Maak een door tekst gescheiden bestand in Access Vba
Zoeken…
Invoering
Soms moet u een gescheiden tekstbestand maken voor verschillende doeleinden. Het volgende voorbeeld is een van de vele manieren om u hierbij te helpen. Ik heb een pijp ("|") gebruikt voor mijn scheidingsteken, om dat te veranderen, verander gewoon de toewijzing van de Sep variabele. In mijn voorbeeld dump ik de recordset naar een array, dit is geenszins de defacto-benadering, het is gewoon mijn bestemming. Dit kan eenvoudig worden gedaan met behulp van de recordset zelf.
Opmerkingen
Dit is het vermelden waard:
Wholeline = Wholeline & aRR(i, j) & Sep
Omdat recordsets naar getransponeerde arrays worden gedumpt, moet u deze achteruit naar het tekstbestand lezen. Dit is eigenlijk een beetje handig als je met dynamische arrays werkt, omdat het al voor je is getransponeerd, dus het opnieuw instellen van het "aantal rijen" kan worden gedaan voordat zwaar tillen wordt uitgevoerd.
Ook niets waard:
Je kunt je array eenvoudig transponeren door het regel voor regel in een nieuwe regel te dumpen met deze syntaxis:
Dim xaRR() As String
ReDim xaRR(q, z)
xaRR(j, i) = aRR(i, j)
dit is niet te relevant voor mijn bericht, maar het is de moeite waard erop te wijzen.
Voorbeeld:
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