Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

VB - Datei zeilenweise auslesen und in ListBox ausgeben

Empfohlene Antworten

Veröffentlicht

Hallo,

ich habe da ein Problem mit VB. - Bin noch Neuling auf dem Gebiet und wollte wissen, wie ich den Inhalt einer Textdatei einlesen und in einer Listbox ausgeben kann. Den Dateinamen sowie den Pfad gibt der User über 2 Textfelder ein.

Hier ist mein bisheriger Programmcode.. Kann sein, dass dort einige Fehler sind, ich komme mit den ganzen "Objekt-erstellen"-Sachen noch nicht so klar.

Private Sub cmdClick_Click()

Dim fsoObj

Set fsoObj = CreateObject("Scripting.FileSystemObject")

Dim FileName As String

Dim PathName As String

Dim absPath As String

Dim Datei As String

PathName = txtPfad.Text

FileName = txtDatei.Text

absPath = PathName & FileName

Datei = fsoObj.OpenAsTextStream(absPath)

Do While Not EOF(Datei)

'Dateiinhalt zeilenweise in die Listbox schreiben

Loop

Close Datei

End Sub

Danke für die Hilfe!

MfG, Jusky

hi

erstmal würde ich ein Commondialog element einfügen, dann muss der user den pfad nicht selber angeben sondern sucht die datei mit dem CD

Das bsp. müsste so eigentlich laufen


Private Sub Einlesen_Click()          


Dim Dateinr As Integer           'Variable

Dim Temp As String                 'Variable

dim DateiPfad as String


CommonDialog1.ShowOpen


DateiPfad = CommonDialog1.Filename


Dateinr = FreeFile

Open DateiPfad For Input As Dateinr

Do While Not EOF(Dateinr)    

Line Input #Dateinr, Temp

list1.AddItem Temp

Loop

Close Dateinr


End Sub

Danke für die schnelle Antwort! :)

Das mit dem Common Dialog musst du mir aber mal genauer erklären!

Brauche ich denn nicht für die ganze Sache das FileSystemObject? - Wie würde das denn damit aussehen?

FileSystemObject hab ich noch nie gebraucht und weiß jetzt eigentlich auch gar nicht wozu...

den CommonDialog musst du erst in die werkzeugliste mit einfügen:

Menü: Project => Komponenten => neues fenster geht auf hier suchst du Microsoft Common Dialog Control 6.0 davor machst du dann nen hacken und drückst OK

dann hast du das element bei den anderen (textbox, Listbox,...) ganz unten

füge das neue element einfach in die form ein und mit dem Code den ich geschrieben hab müsste ess dann auch schon laufen

Super, es hat funktioniert!!! :)

Vielen Dank nochmal und einen schönen Tag!

MfG,

Jusky

Freut mich wenn ich helfen konnte :)

Um angemessen auf ein Abbrechen des CommonDialogs durch den User reagieren zu können, würde ich noch folgendes hinzufügen:

On Error Resume Next

CommonDialog_Option.ShowOpen

If Err = cdlCancel Then

Exit Sub

End If

Der CommonDialog wirft einen cdlCancel-Error wenn durch den User der Abbrechen-Button gedrückt wird.

Die Sub die verlassen werden soll, wäre hier z.b. das Click-Ereigniss des Buttons mit dem der User eine Datei auswählen kann.

Also irgendwie haut das bei mir nicht hin... Das bringt mein Programm regelrecht zum Absturz. Ich muss das Ganze doch vor dem eigentlichen Dateiaufruf einfügen, oder? Der ganze Quellcode ist folgender:

Private Sub cmdClick_Click()

Dim Dateinr As Integer

Dim PathName As String

Dim Zeile As String

On Error Resume Next

CommonDialog1.ShowOpen

If Err = cdlCancel Then

Exit Sub

End If

PathName = CommonDialog1.FileName

Dateinr = FreeFile

Open PathName For Input As Dateinr

Do While Not EOF(Dateinr)

Line Input #Dateinr, Zeile

lstInhalt.AddItem Zeile

Loop

Close Dateinr

End Sub

also wenn jetzt ein fehler auftritt zeigt er gar nichts an sondern beendet nur die sub.

wenn er ne meldung bringen soll schreib das nach der err_err:

z.b. Msgbox "Fehler!"


Option Explicit


Private Sub Command1_Click()


On Error GoTo err_err


Dim Dateinr As Integer           'Variable

Dim Temp As String                 'Variable

Dim DateiPfad As String


CommonDialog1.ShowOpen


DateiPfad = CommonDialog1.FileName


Dateinr = FreeFile

Open DateiPfad For Input As Dateinr

Do While Not EOF(Dateinr)

Line Input #Dateinr, Temp

List1.AddItem Temp

Loop

Close Dateinr


Exit Sub


err_err:


End Sub

Ja, so gehts wieder. :)

Habe noch ein Unload Me dahinter gesetzt, damit das Programm beim Abbruch und der Meldung sofort geschlossen wird.

So, danke euch beiden für die Tips! :)

kleiner Tipp: wenn du wissen willst ob der User den CD abgebrochen hat dann frag den CommonDialog1.Filename ab wenn der = "" ist dann hat der user folglich keine Datei ausgewält (also Abgebrochen)

Also irgendwie haut das bei mir nicht hin... Das bringt mein Programm regelrecht zum Absturz.

Sorry, hab auch was vergessen:

Dem CommonDialog muss vorher seine Eigenschaft CancelError = true gesetzt werden.

Etwa mit CommonDialog1.CancelError=true.

Ansonsten wird halt kein Fehler beim Drücken des Abbrechen-Buttons geworfen,

und wegen Resume next läuft dein Programm beim Versuch eine Datei über einen leeren String zu öffnen ins Nirvana.

Sorry nochmal.

tjo desswegen so da gibts net viel falsch zu machen und läuft so ziemlich auf das selbe raus ;)

Originally posted by |ReDBullet|

kleiner Tipp: wenn du wissen willst ob der User den CD abgebrochen hat dann frag den CommonDialog1.Filename ab wenn der = "" ist dann hat der user folglich keine Datei ausgewält (also Abgebrochen)

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.