Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

UTF-8-Textdatei mit VBS einlesen

Frage Entwicklung VB for Applications

Mitglied: n4426

n4426 (Level 2) - Jetzt verbinden

13.12.2010, aktualisiert 18.10.2012, 12498 Aufrufe, 10 Kommentare

Hallo zusammen,

ich versuch heute schon den ganzen Tag ein UTF-8 Formatierte Textdatei mit VBS einzulesen.

Das funktioniert auch soweit, bis auf Sonderzeichen wie z.B. ß, ä, ö ü ... Ich hab leider nichts gefunden, was funktioniert hat um eine UTF-8-Datei mit VBS zu verarbeiten.

Hier mein VBS-Code.

01.
file = "textdatei.txt" 
02.
 
03.
dim Ausgabe, varText, varAusgabeListe 
04.
Set wshShell = WScript.CreateObject( "WScript.Shell" ) 
05.
 
06.
Set fso = CreateObject("Scripting.FileSystemObject") 
07.
 
08.
If fso.FileExists(file) Then 
09.
Set fi = fso.OpenTextFile(file) 
10.
 
11.
Do While Not (fi.atEndOfStream) 
12.
	varText = fi.Readline 
13.
 
14.
	Ausgabe = split(varText, vbTab) 
15.
	 
16.
	msgbox Ausgabe(3)  
17.
 
18.
Loop 
19.
 
20.
End if
Hat da einer von euch vieleicht eine Idee/Lösung für mich?

Vielen Dank im voraus.

mfg
n4426
Mitglied: MrTrebron
13.12.2010 um 15:57 Uhr
Hi n4426

also was ich dir schon mal sagen kann, das du nicht einfach nur die Textdatei angeben kannst, sondern auch den Pfad zur Datei setzen musst.

Zudem wäre es hilfreich wenn du deine Fehlermeldung mit postest.

Gruß
Norbert
Bitte warten ..
Mitglied: bastla
13.12.2010 um 16:02 Uhr
Hallo n4426!

Hast Du es schon mit
Set fi = fso.OpenTextFile(file, 1, False, True)
versucht?

Grüße
bastla
Bitte warten ..
Mitglied: n4426
13.12.2010 um 16:30 Uhr
Hallo,

@norbert: Hab den Pfad nur hier im Posting weggelassen.

Das Problem besteht eigentlich nur darin, das die Sonderzeichen falsch ausgegeben werden (soll hier z.B. ein ß sein).

b660a8e05ba8564b7ae841f97648aa93 - Klicke auf das Bild, um es zu vergrößern


@bastla: ja, hab ich, da kommt das hier raus .

ac7cea6d782a4abb674809d4115d150c - Klicke auf das Bild, um es zu vergrößern

mfg
n4426
Bitte warten ..
Mitglied: bastla
13.12.2010, aktualisiert 18.10.2012
Hallo n4426!

Stimmt - ich seh' da auch kein einziges ß, ä, ö oder ü (sieht ansonsten aber nicht uninteressant aus) ...

[Edit] Das hat jetzt aber gedauert, bis ich diesen Beitrag (bzw sogar jenen ) gefunden habe ... [/Edit]
[Edit2] Sollte sich mit Dieters Kurzfassung unten erledigt haben ... [/Edit2]

Grüße
bastla
Bitte warten ..
Mitglied: 76109
13.12.2010 um 17:10 Uhr
Hallo n4426!

Versuchs mal so:
01.
Const UTF8Path = "E:\Test\UTF8.txt" 
02.
 
03.
Const adTypeText = 2 
04.
 
05.
Dim UTF8Stream, Text 
06.
     
07.
Set UTF8Stream = CreateObject("ADODB.Stream") 
08.
         
09.
With UTF8Stream 
10.
    .Type = adTypeText 
11.
    .Charset = "UTF-8" 
12.
    .Open 
13.
    .LoadFromFile UTF8Path 
14.
     Text = .ReadText 
15.
    .Close 
16.
End With
Gruß Dieter
Bitte warten ..
Mitglied: n4426
13.12.2010 um 17:36 Uhr
Hallo Dieter,

das Sonderzeichen werden jetzt richtig ausgegeben. Danke.

Allerdings wird jetzt das ganze Textfile in einem rutsch eingelesen. Ich brauchs aber Zeile für Zeile und dann die Zeile wieder am TabStop Trennen, damit ich das ganze weiter verarbeiten kann.

Hast du da was zur hand?

mfg
n4426
Bitte warten ..
Mitglied: bastla
13.12.2010 um 17:46 Uhr
Hallo n4426!

Wenn Du alles in der Variablen "Text" hast, kannst Du ja diese zeilenweise splitten:
01.
For Each varText In Split(Text, vbCrLf) 
02.
    MsgBox Split(varText, vbTab)(3) 
03.
Next
Grüße
bastla
Bitte warten ..
Mitglied: n4426
13.12.2010 um 18:02 Uhr
Hallo Bastla,

danke funktioniert fast einwandfrei. Jetzt ist nur noch das Problem, das nach der letzte Zeile der UTF-8-Datei nicht verarbeitet werden kann/darf, da diese eine leerzeile ist (da schmiert das Script ab). Kann man das noch abfangen?

mfg
n4426
Bitte warten ..
Mitglied: bastla
13.12.2010 um 18:07 Uhr
Hallo n4426!

Entweder direkt abfragen:
If Trim(varText) <> "" Then MsgBox Split(varText, vbTab)(3)
bzw
01.
arrText = Split(varText, vbTab) 
02.
If UBound(arrText) >= 3 Then MsgBox arrText(3)
oder, wenn Du immer die letzte Zeile weg lassen willst:
01.
arrLines = Split(Text, vbCrLf) 
02.
For i = 0 To UBound(arrLines)-1 
03.
    MsgBox Split(arrLines(i), vbTab)(3) 
04.
Next
[Edit] Variablenname auf "arrLines" geändert [/Edit]

Grüße
bastla
Bitte warten ..
Mitglied: n4426
13.12.2010 um 18:13 Uhr
Super.
Vielen Dank an Bastla und Dieter.

Ich werds warscheinlich die erste Variante mit dem Direkten abfragen nehmen, dann dürfte es auch gehen, wenn mal zwischendrin eine Zeile leer sein sollte.

mfg
n4426
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst VBS Script in eine Textdatei ausgeben (VBS mit Batch zusammenführen) (5)

Frage von Luuke257 zum Thema Batch & Shell ...

Visual Studio
gelöst VBS schreibt bestimmte Variable nicht in Textdatei (11)

Frage von Saschaaaaa zum Thema Visual Studio ...

VB for Applications
gelöst Bestimmte Spalten aus CSV-Datei auslesen (VBS) (9)

Frage von Gurkenhobel zum Thema VB for Applications ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (14)

Frage von liquidbase zum Thema Windows Update ...

DSL, VDSL
Problem mit variernder Internetgeschwindigkeit (12)

Frage von schaurian zum Thema DSL, VDSL ...