🍀 Das LibreOffice Forum braucht HEUTE Ihre Hilfe! 🍀
❤️ Spenden Sie jetzt und sichern Sie die Zukunft unseres LibreOffice-Forums ❤️
Ihre Spende hilft, die Community offen, werbefrei (bei Registrierung) und lebendig zu halten. Vielen lieben Dank!
>> Das LibreOffice-Forum lebt von Ihnen – und von vielen Experten, die freiwillig und kostenlos ihr Wissen teilen.<<
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.
Dir-Funktion - die Namen der Dateien eines Ordners auflisten
Dir-Funktion - die Namen der Dateien eines Ordners auflisten
Hallo liebe Experten,
mithilfe der Dir()-Funktion wollte die Namen aller PDF-Dateien eines Ordners auflisten. Schien mir eine einfache Angelegenheit, bis ich den ersten Test durchführte. Mein Makro fand die *.pdf-Dateien nicht, weil ich nach *.PDF-Dateien gesucht hatte.
Das habe ich behoben, indem ich nun nach allen Dateien (*.*) in diesem Ordner suche und danach mittels Like-Operator vergleiche, ob die gefundene Datei meinem Suchmuster entspricht. Funktioniert.
Nun meine Frage: Gibt es hierfür eine elegantere Lösung als meinen Notbehelf?
Ich arbeite mit der LO-Version 25.8.5.2 unter Windows 11.
Vielen Dank schon vorab für Eure Unterstützung und liebe Grüße
vom Martin
mithilfe der Dir()-Funktion wollte die Namen aller PDF-Dateien eines Ordners auflisten. Schien mir eine einfache Angelegenheit, bis ich den ersten Test durchführte. Mein Makro fand die *.pdf-Dateien nicht, weil ich nach *.PDF-Dateien gesucht hatte.
Das habe ich behoben, indem ich nun nach allen Dateien (*.*) in diesem Ordner suche und danach mittels Like-Operator vergleiche, ob die gefundene Datei meinem Suchmuster entspricht. Funktioniert.
Nun meine Frage: Gibt es hierfür eine elegantere Lösung als meinen Notbehelf?
Ich arbeite mit der LO-Version 25.8.5.2 unter Windows 11.
Vielen Dank schon vorab für Eure Unterstützung und liebe Grüße
vom Martin
Re: Dir-Funktion - die Namen der Dateien eines Ordners auflisten
Hallo nochmal,
habe bei meiner Anfrage vergessen, den Code beizufügen, was ich hiermit nachhole.
Irgendwo hatte ich gelesen, dass die Dir()-Funktion bei Windows Dateien "normalerweise" nicht zwischen Groß-und Kleinschreibung unterscheidet. Aber da geht es mir wohl so ähnlich wie Heinz Erhardt, der einnmal gesagt hat: "Alles im Leben geht natürlich zu. Nur meine Hose, die geht natürlich nicht zu."
Ja, und nun interessieren mich natürlich die beiden Fragen:
- Woran kann es liegen, dass mit Dir(strPfd & "\*.PDF", 0) "Datei.PDF" gefunden wird, jedoch "Datei.pdf" nicht?
- Gibt es eine elegantere Lösung für dieses Problem als meine Krücke?
Vielen Dank vorab für Tipps und Hinweise zu einer guten Lösung und liebe Grüße
vom Martin
habe bei meiner Anfrage vergessen, den Code beizufügen, was ich hiermit nachhole.
Irgendwo hatte ich gelesen, dass die Dir()-Funktion bei Windows Dateien "normalerweise" nicht zwischen Groß-und Kleinschreibung unterscheidet. Aber da geht es mir wohl so ähnlich wie Heinz Erhardt, der einnmal gesagt hat: "Alles im Leben geht natürlich zu. Nur meine Hose, die geht natürlich nicht zu."
Ja, und nun interessieren mich natürlich die beiden Fragen:
- Woran kann es liegen, dass mit Dir(strPfd & "\*.PDF", 0) "Datei.PDF" gefunden wird, jedoch "Datei.pdf" nicht?
- Gibt es eine elegantere Lösung für dieses Problem als meine Krücke?
Vielen Dank vorab für Tipps und Hinweise zu einer guten Lösung und liebe Grüße
vom Martin
Code: Alles auswählen
Sub Demo_pListFilenames()
MsgBox pListFilenames("D:\00_Allgemein","*.*",Chr(10))
End Sub
Function pListFilenames(ByVal strPfd As String, _
Optional ByVal strMst As String, _
Optional ByVal strTrn As String, _
Optional ByVal bolPfd As Boolean) As String
' Gibt die Dateinamen des Verzeichnisses strPfd
' mit bzw. ohne Pfadangabe zurück.
' PARAMETER:
' strPfd Der zu durchsuchende Ordner mit vollständiger Pfadangabe
' strMst [Optional] Suchmuster; Standard ist *.*
' strTrn [Optional] Trennzeichen zwishen den zurückgegebenen (Pfad- und) Dateinamen; Standard ist das Komma (",")
' bolPfd [Optional] Gibt an, ob gefundene Dateinamen MIT oder OHNE Pfadamgabe zurückgegeben werden; Standard ist OHNE
Dim m As String, c As String, s As String
' STANDARDWERTE FÜR OPTIONALE PARAMETER
If IsMissing(strMst) Then strMst = "*.*" 'Standard-Suchmuster: Alle Dateien
If IsMissing(strTrn) Then strTrn = "," 'Standard-Trennzeichen: Komma (",")
If IsMissing(bolPfd) Then bolPfd = False 'Standard-Einstellung: Dateien OHNE Pfad listen
' WEGWEISER ZUR FEHLER-ROUTINE
On Error GoTo Err_pListFilenames
' MIT SUCHMUSTER ÜBEREINSTIMMENDE DATEINAMEN LISTEN
If Right(strPfd, 1) <> "\" Then strPfd = strPfd & "\" 'Sicherstellen, dass Pfad mit Backslash ("\") endet
c = Dir(strPfd & "*.*", 0) 'Erste Datei im Ordner suchen
Do While c <> "" 'Schleife solange eine Datei gefunden wurde
If c Like strMst Then ' Wenn gefundene Datei dem Suchmuster entspricht
If bolPfd = True Then s = s & strPfd ' Ggf. gefundener Datei die Pfadangabe voranstellen
s = s & c & strTrn ' Gefundene Datei plus Trennzeichen anfügen
End If ' Ende Wenn
c = Dir() ' Nächste Datei im Ordner suchen
Loop 'Ende Schleife
If s <> "" Then s = Left(s, Len(s) - Len(strTrn)) 'Ggf. Letztes Trennzeichen entfernen
pListFilenames = s 'Rückgabewert setzen
Exit_pListFilenames: 'SM: Ausgang
Exit Function 'Diese Prozedur verlassen
Err_pListFilenames: 'SM: Fehler
m = "Fehler-Nr.: " & Err & " in Zeile " & Erl & Chr(10) 'Fehlermeldung erstellen
MsgBox m & Error$: Resume Exit_pListFilenames 'Meldung ergänzen & zeigen, weiter bei SM: Ausgang
End Function
Re: Dir-Funktion - die Namen der Dateien eines Ordners auflisten
Hallo
Ansonsten:
seltsame Frage… offensichtlich ist es hier nicht egal ob etwas GROSS oder klein geschrieben wird.- Woran kann es liegen, dass mit Dir(strPfd & "\*.PDF", 0) "Datei.PDF" gefunden wird, jedoch "Datei.pdf" nicht?
Ansonsten:
Code: Alles auswählen
from pathlib import Path
from msgbox import MsgBox
def messagebox( message, deko=None, title="Read_ME" ):
msg = MsgBox( XSCRIPTCONTEXT.ctx )
msg.addButton( 'ok' )
msg.addButton( 'cancel' )
msg.show( message, deko, title)
def main():
"""
siehe auch https://docs.python.org/3.15/library/pathlib.html#pathlib.Path.glob
python benutzt normale / slashes auch auf windows als Pfadtrenner
"""
rootpath = Path.home() / "Downloads"
pdfs = '\n'.join(f"{p.name}" for p in rootpath.glob("**/*.pdf") )
messagebox(pdfs, title="gugge da die pdfs") LO25.2.x.y debian 13(trixie) auf Raspberry5 8GB (64bit)
LO25.8.x.y flatpak debian 13(trixie) auf Raspberry5 8GB (64bit)
LO25.8.x.y flatpak debian 13(trixie) auf Raspberry5 8GB (64bit)
Re: Dir-Funktion - die Namen der Dateien eines Ordners auflisten
Hallo Karolus,
vielen Dank für Deine Unterstützung! Verstehe ich das richtig, dass eine bessere Lösung als meine derzeitige Krücke nur mittels Python zu erreichen ist? Aus persönlichen Gründen bin ich nicht mehr gewillt, mich in Python einzuarbeiten. Nix für ungut und danke nochmal für Deine Mühen!
Liebe Grüße
vom Martin
vielen Dank für Deine Unterstützung! Verstehe ich das richtig, dass eine bessere Lösung als meine derzeitige Krücke nur mittels Python zu erreichen ist? Aus persönlichen Gründen bin ich nicht mehr gewillt, mich in Python einzuarbeiten. Nix für ungut und danke nochmal für Deine Mühen!
Liebe Grüße
vom Martin
Re: Dir-Funktion - die Namen der Dateien eines Ordners auflisten
Hallo
Vielleicht dann etwas weniger verbastelt mit Ausgabe in ein Tabellenblatt:
Vielleicht dann etwas weniger verbastelt mit Ausgabe in ein Tabellenblatt:
Code: Alles auswählen
sub main()
sfa = createUnoService("com.sun.star.ucb.SimpleFileAccess")
files = sfa.getFolderContents("file:///D:/00_Allgemein/", True)
dim out(ubound(files))
for each file in files
if right(file, 4) = ".pdf" then
out(i) = array(file)
i = i+1
end if
next
redim preserve out(i-1)
thisComponent.Sheets(0).getCellRangeByName("A1:A" & i).DataArray = out
end sub LO25.2.x.y debian 13(trixie) auf Raspberry5 8GB (64bit)
LO25.8.x.y flatpak debian 13(trixie) auf Raspberry5 8GB (64bit)
LO25.8.x.y flatpak debian 13(trixie) auf Raspberry5 8GB (64bit)
Re: Dir-Funktion - die Namen der Dateien eines Ordners auflisten
Hallo,
@karolus: vielleicht hilft noch ein LCASE um die verschiedenen Groß-/Kleinschreibungen abzufangen.
@karolus: vielleicht hilft noch ein LCASE um die verschiedenen Groß-/Kleinschreibungen abzufangen.
Code: Alles auswählen
if lcase(right(file, 4)) = ".pdf" thenGruß,
mikele
mikele
Re: Dir-Funktion - die Namen der Dateien eines Ordners auflisten
Ja da war ja noch was mit GROSS und klein, mit python wärs dann mittels "com.sun.star.ucb.SimpleFileAccess"-service auch nur ein Einzeiler:
Code: Alles auswählen
pdfs = list(filter(lambda file: file.lower().endswith('.pdf'),
sfa.getFolderContents("file:///D:/00Allgemein",False)))
LO25.2.x.y debian 13(trixie) auf Raspberry5 8GB (64bit)
LO25.8.x.y flatpak debian 13(trixie) auf Raspberry5 8GB (64bit)
LO25.8.x.y flatpak debian 13(trixie) auf Raspberry5 8GB (64bit)
Re: Dir-Funktion - die Namen der Dateien eines Ordners auflisten
Hallo Karolus,
hallo mikele,
vielen Dank für Eure Unterstützung!
Das ist ein interessanter Ansatz, der mir wieder neue Welten eröffnet!
Im Prinzip funktioniert der Code von Karolus einwandfrei, nur die letzten beiden Zeilen bringen mir Fehlermeldungen. Ich bin der Sache jetzt nicht weiter nachgegangen, da das Wesentliche klappt; es werden sowohl mit ".pdf" als auch mit "PD'F" die jeweils korrekte Anzahl von Treffern erzielt, und das war ja auch mein Anliegen.
Ich kann es mir jetzt aber nicht verkneifen zu bemerken, dass meine - zugegeben etwas plumpe Methode (alle Dateien einzulesen und sie per Like-Operator mit dem Suchmuster zu vergleichen) - sooo schlecht gar nicht ist, oder sehe ich das falsch?
Fazit: Ich habe wieder etwas neues dazugelernt und dafür danke ich Euch recht herzlich!
Liebe Grüße
vom Martin
hallo mikele,
vielen Dank für Eure Unterstützung!
Das ist ein interessanter Ansatz, der mir wieder neue Welten eröffnet!
Im Prinzip funktioniert der Code von Karolus einwandfrei, nur die letzten beiden Zeilen bringen mir Fehlermeldungen. Ich bin der Sache jetzt nicht weiter nachgegangen, da das Wesentliche klappt; es werden sowohl mit ".pdf" als auch mit "PD'F" die jeweils korrekte Anzahl von Treffern erzielt, und das war ja auch mein Anliegen.
Ich kann es mir jetzt aber nicht verkneifen zu bemerken, dass meine - zugegeben etwas plumpe Methode (alle Dateien einzulesen und sie per Like-Operator mit dem Suchmuster zu vergleichen) - sooo schlecht gar nicht ist, oder sehe ich das falsch?
Fazit: Ich habe wieder etwas neues dazugelernt und dafür danke ich Euch recht herzlich!
Liebe Grüße
vom Martin
Re: Dir-Funktion - die Namen der Dateien eines Ordners auflisten
Du solltest das auch ausführen während du ein neues Calc-dokument geöffnet und im Fokus hast! Du musst halt auch lesen was ich geschrieben habe:
Karolus hat geschrieben:…mit Ausgabe in ein Tabellenblatt:
LO25.2.x.y debian 13(trixie) auf Raspberry5 8GB (64bit)
LO25.8.x.y flatpak debian 13(trixie) auf Raspberry5 8GB (64bit)
LO25.8.x.y flatpak debian 13(trixie) auf Raspberry5 8GB (64bit)
An alle, die das LibreOffice-Forum gern nutzen:
Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das laufende.
Einfach per Kreditkarte oder PayPal. Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.
❤️ Vielen lieben Dank für Ihre Unterstützung ❤️