Comment faire du File Mapping en VBA
Bonjour,
je voudrais lire un fichier texte en binaire, mais j'ai l'impression qu'il est trop gros (222Mo). voici mon code (que j'ai copié à je ne sais plus qui) :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
Dim nomFichier As String, numFile As Integer
Dim errCode As Integer
Dim errString As String
Dim fileContent As String
Dim t() As String
fileContent = ReadFileToBuffer(nomFichier, errCode, errString)
If errCode = 0 Then
...
Else
' Erreur rencontrée, affichage
MsgBox "Erreur lors de la lecture. Code : " & errCode & ". Description : " & errString
End If
' Cette fonction lit le contenu du fichier szFileName et retourne
' ce contenu. En cas d'erreur, elle retourne une chaîne vide et
' renseigne le code d'erreur et la description de l'erreur
'
Private Function ReadFileToBuffer(ByVal szFileName As String, _
ByRef errCode As Integer, _
ByRef errString As String) As String
Dim f As Integer
Dim Buffer As String
' trappe les erreurs
On Error GoTo ReadFileToBuffer_ERR
' Ouverture du fichier en 'Binary'
f = FreeFile
Open szFileName For Binary As #f
' préallocation d'un buffer à la taille du fichier
Buffer = Space$(LOF(f))
' lecture complète du fichier
Get #f, , Buffer
Close #f
ReadFileToBuffer = Buffer
ReadFileToBuffer_END:
Exit Function
ReadFileToBuffer_ERR:
' Gestion d'erreur
ReadFileToBuffer = ""
errCode = Err.Number
errString = Err.Description
Resume ReadFileToBuffer_END
End Function |
Au décodage, à la ligne , on passe directement à
Code:
ReadFileToBuffer_ERR:
(sans fermer le fichier du coup !!), et le message d'erreur c'est : "Erreur lors de la lecture. Code 7 Description : mémoire insuffisante"
J'ai lu que pour des gros fichier il faut faire du file mapping, mais après avoir cherché un certain temps, je n'ai rien trouvé de concret sur comment on l'utilise en vba. Est--ce que quelqu'un saurait me donner une base de code pour faire du fileMapping ?
(mon but au fait étant d'ajouter une ligne à la fin de mon fichier si la dernière ligne respecte certaines conditions)
Merci ;)