Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

bestimmten Ordeninhalt im Listenfeld anzeigen

Begonnen von tismo, Mai 07, 2023, 12:32:30

⏪ vorheriges - nächstes ⏩

tismo

Hallo,

ich habe gerade die Funktion ordnerinhalt im Listenfeld in meiner Anwendung eingebaut.
funtioniert einwandfrei,jedoch wird der komplette Link (addItem) angezeigt.

Private Sub CommandButton1_Click()
    Const Verz = "c:\temp"
    Dim Datei As Object, Ordner As Object, FSO As Object
    Set FSO = CreateObject("Scripting.filesystemobject")
    Me.Liste1.RowSource = ""
    For Each Datei In FSO.getfolder(Verz).Files
        Me.Liste1.AddItem Datei
        Debug.Print Datei
    Next
    For Each Ordner In FSO.getfolder(Verz).subfolders
        Me.Liste1.AddItem Ordner
    Next

Ist es möglich dass lediglich der Dateiname angezeigt wid, also anstatt: "c:\users\Dokumente\Ordner\etc\Rechnung.pdf" nur in diesem Fall "Rechnung.pdf" ?

Liebe Grüße aus dem Ruhrgebiet,
Lars

MzKlMu

Hallo,
ja, kein Problem.
Du kannst mit InstrRev die Position des letzten Backslashs bestimmen und ab dort hast Du den Dateinamen.
Aus dem Direktbereich:
?Mid("c:\users\Dokumente\Ordner\etc\Rechnung.pdf",InStrRev("c:\users\Dokumente\Ordner\etc\Rechnung.pdf","\")+1)
Rechnung.pdf
Gruß Klaus

tismo

Hallo Klaus,

mein vba-Code sieht wie folgt aus:
Dim strPfadDatei As String
Dim CurrentUser As String

On Error GoTo Err_Ordner_öffnen
     CurrentUser = Environ("UserName")
       
        If DLookup("Abfrage1", "01Systemdaten") = True Then
        strPfadDatei = "C:\Users\" & CurrentUser & "\OneDrive\Dokumente\" & Me.RechnungsnummerDruck & "-" & Me.Name
               
    Else
        strPfadDatei = DLookup("pdfPfad", "01Systemdaten") & Me.RechnungsnummerDruck & "-" & Me.Name
        End If
   
Dim Verz As String
    Verz = strPfadDatei

Dim Datei As Object
Dim Ordner As Object
Dim FSO As Object
Set FSO = CreateObject("Scripting.filesystemobject")
Me.List1.RowSource = ""
For Each Datei In FSO.GetFolder(Verz).Files
    Me.List1 = Mid(Verz, InStrRev(Verz, "\") + 1)
    'Me.List1.AddItem Datei
Next
For Each Ordner In FSO.GetFolder(Verz).SubFolders
    Me.List1 = Mid(Verz, InStrRev(Verz, "\") + 1)
    'Me.List1.AddItem Ordner
Next

Exit Sub

Leider wird nichts angezeigt ... :(

Gruß,
Lars

MzKlMu

Hallo,
gehe den Code im Einzelschritt durch und schau Dir dabe den Inhalt der Variablen an.
Gruß Klaus

tismo

Hallo Klaus

mit dieser Version For Each Datei In FSO.GetFolder(Verz).Files
    Me.List1.AddItem Datei
Next
For Each Ordner In FSO.GetFolder(Verz).SubFolders
    Me.List1.AddItem Ordner
wird der Inhalt des Ordners angezeigt, allerdings der komplette Link
wie schon beschrieben sollte der Übewrsicht wegen nur den Namen der Datei angezeigt werden.

Gruiß,
Lars

MzKlMu

Hallo,
was genau steht in Datei und was in Ordner ?
Gruß Klaus

tismo

in der Datei

'C:\Users\OneDrive\Dokumente\Dokumente\23050277-Name\Sterbeurkunde Name.pdf'

es ist kein Ordner vorhanden

MzKlMu

#7
Hallo,
versuche es mal so:
...
For Each Datei In FSO.GetFolder(Verz).Files
    Me.List1.AddItem Mid(Datei, InStrRev(Datei, "\") + 1)
Next
For Each Ordner In FSO.GetFolder(Verz).SubFolders
    Me.List1.AddItem Left(Datei, InStrRev(Datei, "\"))
....

Was genau willst Du im Listenfeld anzeigen?



Gruß Klaus

tismo

Hallo Klaus,

 ich möchte nur den Datinamen im Ordner im Listenfeld anzeigen.

jetzt funktioniert es ...

Danke.

Gruß,
Lars



markusxy

@tismo,
du arbeitest hier ja mit Objekten, die auch jede Menge Informationen über eine Datei oder Ordner mitliefern.
Über Datei.Name bekommst du z.B. das gewünschte geliefert.

Wenn man nicht weiß, welche Infos ein Objekt liefert kann man z.B. in der Dokumentation schauen, oder im Objektkatalog, oder einfach in der Entwicklungsumgebung einen Haltepunkt setzen und dann kannst du zur Laufzeit bzw. beim Debuggen im Lokalfenster alle Eigenschaften eines Objektes ansehen.