Hallo zusammen,
möchte an einer bestimmten Stelle einer Textdatei, den Inhalt einer anderen Textdatei einfügen.
Wie geht das?
Kann mir jemand helfen?
Danke im voraus
Gruß Jakobi
PublicFunction TextFileReadAll(ByVal FileName AsString) AsString Dim F AsInteger Dim sInhalt AsString
If Dir$(FileName, vbNormal) <> "" Then
F = FreeFile
Open FileName ForBinaryAs #F sInhalt = Space$(LOF(F)) Get #F, , sInhalt Close #F
EndIf
TextFileReadAll = sInhalt
EndFunction
PublicSub TextFileWriteLine(ByVal FileName As String, ByVal LinePos As Long, _ ByVal NewString As String, OptionalByVal Replace AsBoolean = True) Dim F As Integer, N AsInteger Dim I As Long, lRow AsLong Dim Zeile As String, myTempFile AsString
If Dir$(FileName, vbNormal) = "" Then
F = FreeFile
Open FileName For Output As #F
For I = 1 To LinePos - 1 Print #F, "" Next I
Print #F, NewString
Close #F
Else
myTempFile = TextFileTempFilename()
F = FreeFile: Open FileName ForInputAs #F N = FreeFile: Open myTempFile For Output As #N
WhileNot EOF(F)
lRow = lRow + 1
Line Input #F, Zeile
If lRow = LinePos Then If Replace Then Zeile = NewString Else Zeile = NewString & vbLf & Zeile EndIf EndIf
Print #N, Zeile
Wend
If lRow < LinePos Then For I = lRow + 1 To LinePos - 1 Print #N, "" Next I Print #N, NewString EndIf
OptionExplicit '########################################################################################### '## Sorce:=http://www.vbarchiv.net/archiv/tipp_details.php?pid=301 '########################################################################################### ' Wird benötigt, zum Ermitteln des temporären ' Verzeichnisses und zum Erstellen temporärer Dateien PrivateDeclareFunction GetTempFileName Lib"kernel32" _ Alias "GetTempFileNameA" (ByVal lpszPath As String, _ ByVal lpPrefixString As String, _ ByVal wUnique As Long, _ ByVal lpTempFileName AsString) AsLong
PrivateDeclareFunction GetTempPath Lib"kernel32.dll" _ Alias "GetTempPathA" (ByVal nBufferLength As Long, _ ByVal lpBuffer AsString) AsLong
Private winTempPath AsString
' Ermittelt einen temporären Dateinamen ' im temporären Verzeichnis PrivateFunction txt_TempFilename() AsString Dim myTempFileName AsString Dim RetVal AsLong
PublicFunction txt_ReadAll(ByVal sFilename AsString) AsString Dim F AsInteger Dim sInhalt AsString
' Existiert die Datei ? If Dir$(sFilename, vbNormal) <> "" Then ' Textdatei im Binärmodus öffnen und gesamten ' Inhalt in einem Rutsch auslesen F = FreeFile Open sFilename ForBinaryAs #F sInhalt = Space$(LOF(F)) Get #F, , sInhalt Close #F EndIf
txt_ReadAll = sInhalt EndFunction
PublicSub txt_WriteLine(ByVal sFilename As String, _ ByVal LinePos As Long, ByVal sLine AsString)
Dim F AsInteger Dim N AsInteger Dim I AsLong Dim lRow AsLong Dim Zeile AsString Dim myTempFile AsString
If Dir$(sFilename, vbNormal) = "" Then ' Wenn Datei nicht existiert, automatisch erstellen ' und Inhalt sofort speichern F = FreeFile Open sFilename For Output As #F
' Datei mit Leerzeilen füllen, bis gewünschte ' Schreibposition erreicht ist For I = 1 To LinePos - 1 Print #F, "" Next I
' Original-Datei zum Lesen und temporäre ' Datei zum Schreiben öffnen F = FreeFile: Open sFilename ForInputAs #F N = FreeFile: Open myTempFile For Output As #N
' Original-Datei einlesen und x. Zeile durch ' neuen Inhalt ersetzen lRow = 0 WhileNot EOF(F) lRow = lRow + 1 Line Input #F, Zeile
'' 'Original '' If lRow = LinePos Then '' ' x. Zeile durch neuen Inhalt ersetzen '' Zeile = sLine '' End If '' '' Print #N, Zeile
'Modifikation j.ehrensberger If lRow = LinePos Then Print #N, sLine & vbLf & Zeile Else Print #N, Zeile EndIf
Wend
' sollte LinePos größer sein, als die bisherige ' Anzahl gespeicherter Zeilen in der Orginaldatei ' wurde der neue Inhalt noch nicht gespeichert ' und die Datei muss ggf. noch mit zusätzlichen ' Leerzeilen gefüllt werden! If lRow < LinePos Then ' Ggf. mit Leerzeilen füllen For I = lRow + 1 To LinePos - 1 Print #N, "" Next I
' Neuen Zeilen-Inhalt speichern Print #N, sLine EndIf
Sub TextInText() Dim strFile As String, strInsert As String, strTmp AsString Dim lLine AsLong
strFile = "F:\Temp\Text.txt"'Textdatei in die Eingefügt wird strInsert = "F:\Temp\Insert.txt"'Textdatei deren Text eingefügt wird
lLine = 2 'zeile in welche eingefügt wird
strTmp = txt_ReadAll(strInsert)
txt_WriteLine strFile, 2, strTmp
EndSub
Gruß Sepp
Anzeige
Korrektur
28.02.2008 22:53:05
Josef
Hallo Jakobi,
da hat sich noch ein Fehler eingeschlichen. Die "Sub TextInText()" bitte gegen diese tauschen. Sub TextInText() Dim strFile As String, strInsert As String, strTmp AsString Dim lLine AsLong
strFile = "F:\Temp\Text.txt"'Textdatei in die Eingefügt wird strInsert = "F:\Temp\Insert.txt"'Textdatei deren Text eingefügt wird