VBA Tipp: Text in eine Textdatei schreiben

Aus DBWiki
Wechseln zu: Navigation, Suche

Anforderung

Ich möchte den gesamten Inhalt einer String-Variablen oder eines Textfeldes in eine Textdatei schreiben.

Lösung 1

Das geht mit folgender Funktion, die in einem globalen Modul gespeichert wird.

Public Sub InDateiSchreiben(Dateipfad As String, _
                            Text As String, _
                            Optional ByVal Anfuegen As Boolean)
 
   'Quelle: http://www.dbwiki.net
 
   'Verwendet Late Binding. Deshalb ist kein Verweis auf
   'die Microsoft Scriping Runtime notwendig.
 
   Const ForWriting   As Long = 2
   Const ForAppending As Long = 8
 
   On Error Resume Next
 
   If Anfuegen Then  'Text wird an vorhandenen Text angefügt
      CreateObject("Scripting.FileSystemObject") _
         .OpenTextFile(Dateipfad, ForAppending).Write Text
   Else              'evtl. vorhandener Text wird überschrieben
      CreateObject("Scripting.FileSystemObject") _
         .OpenTextFile(Dateipfad, ForWriting).Write Text
   End If
 
End Sub

Lösung 2

Das geht mit folgender Funktion, die in einem globalen Modul gespeichert wird.

Public Sub InDateiSchreiben(Dateipfad As String, _
                            Text As String, _
                            Optional ByVal Anfuegen As Boolean)
 
   'Quelle: http://www.dbwiki.net
 
   Dim d As Integer
 
   d = FreeFile()
 
   If Anfuegen Then  'Text wird an vorhandenen Text angefügt
      Open Dateipfad For Append As d
   Else              'evtl. vorhandener Text wird überschrieben
      Open Dateipfad For Output As d
   End If
 
   Print #d, Text;
 
   Close d
 
End Sub

Aufruf

(Gilt für beide Lösungen)

Beispiel 1

Eventuell vorhandener Text wird überschrieben.

   Dim strPfad As String
   Dim strText As String
 
   strPfad = CurrentProject.Path & "\test.txt"
   strText = "Mein langer Text" & vbCrLf & _
             "mit zweiter Zeile" & vbCrLf & _
             "und mit dritter Zeile."
 
   Call InDateiSchreiben(strPfad, strText)

Beispiel 2

Der neue Text wird an eventuell vorhandenen Text angefügt.

   Dim strPfad As String
   Dim strText As String
 
   strPfad = CurrentProject.Path & "\test.txt"
   strText = "Mein langer Text" & vbCrLf & _
             "mit zweiter Zeile" & vbCrLf & _
             "und mit dritter Zeile."
 
   Call InDateiSchreiben(strPfad, strText, True)

Wikilinks

Weblinks