access-vba
Créer un fichier texte délimité dans Access Vba
Recherche…
Introduction
Vous devrez parfois créer un fichier texte délimité pour diverses utilisations. L'exemple suivant est l'une des nombreuses façons de vous aider. J'ai utilisé un pipe ("|") pour mon délimiteur, pour changer cela juste changer l'attribution de la variable Sep. Dans mon exemple, je vider le jeu d'enregistrements dans un tableau, ce n'est en aucun cas l'approche de facto, c'est juste mon but. Cela peut facilement être fait en utilisant le jeu d’enregistrements lui-même.
Remarques
Cela vaut la peine de le souligner:
Wholeline = Wholeline & aRR(i, j) & Sep
Comme les jeux d'enregistrements sont transférés dans des tableaux transposés, vous devrez le lire dans le fichier texte en arrière. C'est en fait un peu pratique si vous travaillez avec des tableaux dynamiques, car ils sont déjà transposés pour vous, ce qui permet de redéfinir le "nombre de lignes" avant de commencer.
Ne vaut également rien:
Vous pouvez facilement transposer votre tableau en le déversant dans une nouvelle ligne par ligne en utilisant cette syntaxe:
Dim xaRR() As String
ReDim xaRR(q, z)
xaRR(j, i) = aRR(i, j)
Ce n'est pas trop pertinent pour mon post, mais cela vaut la peine de le souligner.
Exemple:
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