Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
484to488
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
484to488
484to488
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

VBA Open Methode

VBA Open Methode
20.09.2004 13:27:48
Jens
Hallo Leute,
ich bin dabei mir einen Parser zu programmieren, der externe Texttemplates einliest und dann bei bestimmten Platzhaltern den Wert gegen Daten aus der Tabelle ersetzt.
Leider hab ich das Problem, dass ich es nicht hinbekomme die gesamte Textdatei einzulesen... irgendwie nimmt er immer nur die letzte Zeile.
Hat jemand einen Tipp?
Bin für jede Hilfe sehr dankbar ;-)
Ciao
Jens

Function getTemplate(location As String) As String
Dim txt As String
Open location For Input As #1
Do Until EOF(1)
Line Input #1, txt
Loop
Close
getTemplate = txt
End Function


Function parser(templateSource As String) As String
templateSource = Replace(templateSource, "%%vorname%%", "Jens")
templateSource = Replace(templateSource, "%%nachname%%", "Müller")
templateSource = Replace(templateSource, "%%Kundennummer%%", "123435")
parser = templateSource
End Function


Sub DoParse(where As String)
MsgBox (parser(getTemplate("c:\test.txt")))
End Sub

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Open Methode
20.09.2004 13:43:31
Jens
ach so... hier noch der inhalt des textfiles. Im Moment parst er nur die letzte Zeile. Die obere taucht in der MsgBox Ausgabe gar nicht erst auf... Oder liegt das vielleicht an der MsgBox, dass ich immer nur die letzte Zeile zu sehen bekomme? Hat das was mit Zeilenumbrüchen zu tun?
%%kundennummer%%
Sehr geehrter %%vorname%% %%nachname%%
AW: VBA Open Methode
Frank
Hallo Jens,
eigentlich ist die Sache klar: Bei jedem Aufruf von getTemplate wird Test.TXT geöffnet, anschließend in der Do Until Schleife bis zum letzten Satz geblättert, dann wird die Datei geschlossen und der letzte Satz als String zurückgegeben. Und beim nächsten Aufruf der Funktion beginnt das Spiel wieder von vorn.
Bau die Open und Close Anweisung in die DoParse-Prozedur ein. Und die Do Until-Schleife rausnehmen und durch eine If-Abfrage ewrsetzen:
If Not EOF(1) then
LineInput #1, txt
else
close #1
end if
Hoffe, es hat geholfen.
Gruß Frank
Anzeige
AW: VBA Open Methode
jetzt
Hallo Frank,
erstmal danke für Deine Hilfe ;-)
Ich hab die Änderungen mal eingebaut, nur parst er nu die erste Zeile und ignoriert die Folgezeilen :-(
Ich versteh das irgendwie nich, man muss doch irgendwie son dusseliges Textfile vollständig in ne Variable schreiben können.

Function parser(templateSource As String) As String
templateSource = Replace(templateSource, "%%vorname%%", "Jens")
templateSource = Replace(templateSource, "%%nachname%%", "Müller")
templateSource = Replace(templateSource, "%%kundennummer%%", "123435")
parser = templateSource
End Function


Function DoParse(where As String) As String
Dim txt As String
Open where For Input As #1
If Not EOF(1) Then
Line Input #1, txt
Else
Close #1
End If
Close
DoParse = parser(txt)
End Function

Anzeige
AW: VBA Open Methode
Frank
Hallo Jens,
versuch´s mal so:

Sub DoParse()
Dim txt as String
Open "C:\Test.TXT" for Input as #1
Do While Not EOF(1)
LineInput #1, txt
MsgBox(parser(txt))
Loop
End Sub

Die Funktion getTemplate also völlig weglassen, was die bislang gemancht hat steht jetzt in der Sub.
Gruß
Frank
AW: VBA Open Methode
Dan
Koennte es das sein : _?
Option Explicit

Sub test()
MsgBox getTemplate("C:\Temp\test.txt")
End Sub


Function getTemplate(location As String) As String
Dim txt As String
Open location For Input As #1
getTemplate = ""
Do Until EOF(1)
Line Input #1, txt
If (getTemplate = "") Then
getTemplate = txt
Else
getTemplate = getTemplate & vbCrLf & txt
End If
Loop
Close
End Function

Anzeige
LÖSUNG!
20.09.2004 14:18:17
Jens
also hier ist die lösung! hab das grade rausgegoogelt.
trotzdem danke für eure tipps!
kleine Frage noch: was hat es mit diesem option explicit auf sich?

Function parser(templateSource As String) As String
templateSource = Replace(templateSource, "%%vorname%%", "Jens")
templateSource = Replace(templateSource, "%%nachname%%", "Müller")
templateSource = Replace(templateSource, "%%kundennummer%%", "123435")
parser = templateSource
End Function


Function DoParse(where As String) As String
Dim strImport As String
Dim lngChars As Long
Dim intFile As Integer
intFile = FreeFile
Open where For Input As intFile
lngChars = LOF(intFile)
strImport = Input(lngChars, intFile)
DoParse = parser(strImport)
End Function

Anzeige
AW: LÖSUNG!
Kurt
für
Option Explicit muss man keinen Beitrag auf offen stellen ! Schon gar nicht bei vba=Gut
und Tschüss Kurt

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige