web-dev-qa-db-fra.com

Comment créer et écrire dans un fichier texte avec VBA

J'ai un fichier qui est ajouté ou modifié manuellement en fonction des entrées. Étant donné que la plupart des contenus sont répétitifs dans ce fichier, seules les valeurs hexadécimales changent. Je souhaite en faire un fichier généré par un outil.

Je veux écrire les codes c qui vont être imprimés dans ce fichier .txt.

Quelle est la commande pour créer un fichier . Txt en utilisant VBA, et comment puis-je y écrire

105
danny

Utilisez FSO pour créer le fichier et y écrire.

Dim fso as Object
Set fso = CreateObject("Scripting.FileSystemObject")
Dim oFile as Object
Set oFile = FSO.CreateTextFile(strPath)
oFile.WriteLine "test" 
oFile.Close
Set fso = Nothing
Set oFile = Nothing    

Voir la documentation ici:

155
Ben
_Open ThisWorkbook.Path & "\template.txt" For Output As #1
Print #1, strContent
Close #1
_

Plus d'information:

30
Bhanu Sinha

un moyen facile avec beaucoup de redondance.

    Dim fso As Object
    Set fso = CreateObject("Scripting.FileSystemObject")

    Dim Fileout As Object
    Set Fileout = fso.CreateTextFile("C:\your_path\vba.txt", True, True)
    Fileout.Write "your string goes here"
    Fileout.Close
29
pelos

Pour élaborer réponse de Ben :

Si vous ajoutez une référence à Microsoft Scripting Runtime et saisissez correctement la variable fso , vous pouvez tirer parti de la complétude automatique (Intellisense) et découvrez les autres fonctionnalités de FileSystemObject.

Voici un exemple de module complet:

Option Explicit

' Go to Tools -> References... and check "Microsoft Scripting Runtime" to be able to use
' the FileSystemObject which has many useful features for handling files and folders
Public Sub SaveTextToFile()

    Dim filePath As String
    filePath = "C:\temp\MyTestFile.txt"

    ' The advantage of correctly typing fso as FileSystemObject is to make autocompletion
    ' (Intellisense) work, which helps you avoid typos and lets you discover other useful
    ' methods of the FileSystemObject
    Dim fso As FileSystemObject
    Set fso = New FileSystemObject
    Dim fileStream As TextStream

    ' Here the actual file is created and opened for write access
    Set fileStream = fso.CreateTextFile(filePath)

    ' Write something to the file
    fileStream.WriteLine "something"

    ' Close it, so it is not locked anymore
    fileStream.Close

    ' Here is another great method of the FileSystemObject that checks if a file exists
    If fso.FileExists(filePath) Then
        MsgBox "Yay! The file was created! :D"
    End If

    ' Explicitly setting objects to Nothing should not be necessary in most cases, but if
    ' you're writing macros for Microsoft Access, you may want to uncomment the following
    ' two lines (see https://stackoverflow.com/a/517202/2822719 for details):
    'Set fileStream = Nothing
    'Set fso = Nothing

End Sub
21