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(ByVal Dateipfad As String, _
                            ByVal Text As String, _
                            Optional ByVal Anfügen As Boolean = False)
 
 ' Quelle: www.dbwiki.net oder www.dbwiki.de
 ' Late Binding: Kein Verweis auf die Microsoft Scriping Runtime notwendig.
 
 Dim FSO As Object  'FileSystemObject
 Dim TS As Object   'TextStream
 Const ForWriting = 2
 Const ForAppending = 8
 
 On Error Resume Next
 
 Set FSO = CreateObject("Scripting.FileSystemObject")
 
 'Text wird an vorhandenen Text angefügt
 If Anfügen = True Then
   Set TS = FSO.OpenTextFile(Dateipfad, ForAppending)
 'evtl. vorhandener Text wird überschrieben
 Else
   Set TS = FSO.OpenTextFile(Dateipfad, ForWriting)
 End If
 
 TS.Write Text
 
 TS.Close
 Set TS = Nothing
 Set FSO = Nothing
 
End Sub

Aufruf

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 den eventuell vorhandenen Text angehängt.

 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)


Lösung 2

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

Public Sub InDateiSchreiben(ByVal Dateipfad As String, _
                            ByVal Text As String)
 
 ' Quelle: www.dbwiki.net oder www.dbwiki.de
 
 Dim d As Integer
 
 d = FreeFile
 
 Open Dateipfad For Output As #d
 Print #d, Text
 
 Close #d
 
End Sub

Aufruf

 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)


Wiki-Links

Web-Links