Seite 1 von 1
Auflistung eines Dateiverzeichnisses
Verfasst: Sa, 24.02.2007 21:11
von Zahnerer
Hallo OO-Fans,
eigentlich ist diese Frage wahrscheinlich im Calc-Forum verkehrt, aber ehrlich gesagt, weiß ich nicht recht, wo ich sie stellen soll.
Es wäre super, wenn es möglich wäre, Ordner- und Dateinamen an einem bestimmten Verzeichnisort auszulesen. Weiß irgendwer eine Möglichkeit, dies mit bestenfalls Calc zu bewerkstelligen?
Mit auf Antworten gespannten Grüßen, Zahnerer
Verfasst: Sa, 24.02.2007 22:49
von Karolus
Hallo Zahnerer
eigentlich ist diese Frage wahrscheinlich im Calc-Forum verkehrt, aber ehrlich gesagt, weiß ich nicht recht, wo ich sie stellen soll.
zb. in OOo-basic und Java
Aber wo du schon mal hier bist, folgendes Makro schreibt den Inhalt eines Verzeichnisses in ein Writer-dokument und erstellt auch gleich Hyperlinks daraus : (gefunden hier
viewtopic.php?t=4433&highlight=verzeichniss)
Code: Alles auswählen
Sub ShowFiles
doc=thiscomponent
oText = Doc.getText()
oCursor = oText.createTextCursor()
oCursor.gotoEnd( False )
Dim NextFile As String
Dim AllFiles As String
AllFiles = ""
NextFile = Dir("/dein/verzeichniss/", 0)
'NextFile = Dir("C:\dein\verzeichniss\",0) 'Windows-Syntax
While NextFile <> ""
oCursor.gotoEnd(false)
oText.insertString( oCursor,Nextfile, False )
oText.insertControlCharacter( oCursor, com.sun.star.text.ControlCharacter.PARAGRAPH_BREAK, False )
oCursor.gotoPreviousParagraph(false)
oCursor.gotoStartofParagraph(true)
oCursor.gotoEndofParagraph(true)
oCursor.hyperlinkurl="file:///dein/verzeichniss/"&Nextfile
'oCursor.hyperlinkurl="file:///C:\dein\verzeichniss\"&Nextfile 'Windows-syntax ?
NextFile = Dir
Wend
End Sub
Falls Windows ? bitte die beiden Pfad-zeilen umkommentieren.
Gruß Karo
Verfasst: So, 25.02.2007 10:25
von Toxitom
Hey Zahnerer,
na, da liefere ich dir doch gleich noch einen Code dazu:
Code: Alles auswählen
REM listet alle Dateien eines Verezeichnisses in einem
REM Calc-Sheet auf
Sub Dateien_auflisten
dim sPfad as string
dim oSheet as Object
dim iSp as integer, iZe as Long
oSheet = thisComponent.sheets.getByName("Tabelle1")
iSp = 0 : iZe = 4 'Startzele der Auflistung A5
sPfad = ConvertToUrL("D:\Daten\welcher\Pfad\auch\immer\")
nextFile = dir(sPfad, 0) 'die erste Datei
Do while nextFile <> ""
oSheet.getCellByPosition(iSp, iZe).string = nextFile
iZe = iZe + 1
nextFile = Dir
loop
End Sub
Viele Grüße
Thomas
Verfasst: Mo, 26.02.2007 00:04
von Zahnerer
Hallo Toxitom und Karolus,
erst mal vielen Dank für die schnellen Antworten. Mein Problem ist nur, dass ich mich bei Makros noch gar nicht auskenne. Ich würd's ja schon gerne wissen und vielleicht ist dies eine Gelegenheit zum Einstieg...
Könnt Ihr mir ein paar Tips für Greenhorns geben? Ich denke, ich brauch 'nen Button und ein Eingabefeld um die Variable (Dir) einzugeben. Wie mach ich das als absoluter Anfänger in Basic?
Kann man auch die Verzeichnisse (und Dateien) innerhalb eines Verzeichnisses auslesen lassen?
so ähnlich zum Beispiel (als Tabelle natürlich):
???
Dank für die Hilfe und Antworten, Zahnerer
Verfasst: Fr, 02.03.2007 11:16
von Karolus
Hallo Zahnerer
Kopier mal folgendes nach:
-->Extras-->Makros-->Makros verwalten-->OOo-basic
'meine Makros'--Standard--"neues Modul"[1]
[1]erstellen über Schaltfläche 'neu
Code: Alles auswählen
REM ***** BASIC *****
rem *Überträgt die Verzeichnisstruktur ab einem einzugebenden
rem *Oberverzeichniss in ein Tabellendokument
rem * Zahnerer 02-03-07 --Karo--
Sub Verzeichnisstruktur
dim sPfad as string
dim oSheet as Object
dim iSp as integer, iZe as Long
dim neupfad as string
dim upfad as string
odoc = thisComponent
oSheet = thisComponent.sheets(0)
iSp = 0 : iZe = 0 'Startzelle der Auflistung A1
sPfad = inputbox ("Bitte gib einen Verzeichnisspfad ein: ","Lieber Benutzer")
sPfad = ConvertToUrl(sPfad)
dv = 16 'für Verzeichnisse
nextFile = dir(sPfad, dv) 'das erste Verzeichniss
Do while nextFile <> ""
if nextfile = "." or nextfile = ".." or left(nextfile,1) = "." then
nextfile = Dir
else
'für die erste Verzeichnissebene werden Tabellenblätter
'mit den Verzeichnissnamen erstellt
oDoc.Sheets.CopyByName("Tabelle1",nextfile ,tindex + 1)
tindex = tindex + 1
nextFile = Dir
end if
loop
dv = 0 'für Dateien
nextFile = dir(sPfad, dv) 'die erste Datei
Do while nextFile <> ""
if nextfile = "." or nextfile = ".." or left(nextfile,1) ="." then
nextfile = Dir
else
'Die Dateien der obersten Verzeichnissebene werden in Tabelle1 gelistet
oSheet.getCellByPosition(Sindex, iZe).string = nextFile
iZe = iZe + 1
nextFile = Dir
end if
loop
tabzahl = odoc.sheets.count
for t = 1 to tabzahl -1
osheet = odoc.sheets(t)
oSp = 1 : oZe = 0
tabname = odoc.sheets(t).name
neupfad = spfad & tabname & "/"
dv = 16 'Verzeichnisse
nextFile = dir(neuPfad , dv) 'das erste Verzeichniss
Do while nextFile <> ""
if nextfile = "." or nextfile = ".." or left(nextfile,1) ="." then
nextfile = Dir
else
'Die 2. Verzeichnissebene wird in Kopfzeile der einzelnen Tabellenblätter geschrieben
oSheet.getCellByPosition(oSp, oZe).string = nextFile
oSp = oSp + 1
nextFile = Dir
end if
scount = oSp
loop
dv = 0 'Dateien
oSp = 0 : oZe = 0
nextFile = dir(neuPfad , dv) 'die erste Datei
Do while nextFile <> ""
if nextfile = "." or nextfile = ".." or left(nextfile,1) ="." then
nextfile = Dir
else
'Die Dateien der 1. Verzeichnissebene werden in Spalte A der einzelnen Tabellenblätter geschrieben
oSheet.getCellByPosition(oSp, oZe).string = nextFile
oZe = oZe + 1
nextFile = Dir
end if
loop
for sp = 1 to scount - 1
oZe = 1
kopf = oSheet.getCellByPosition(Sp, 0).string
upfad = neupfad & kopf & "/"
dv = 0 'Dateien
nextfile = dir(upfad ,dv)
Do while nextFile <> ""
if nextfile = "." or nextfile = ".." or left(nextfile,1) ="." then
nextfile = Dir
else
'die Dateien der zweiten Ebene werden in die zugehörigen Spalten geschrieben
oSheet.getCellByPosition(Sp, oZe).string = nextFile
oZe = oZe + 1
nextFile = Dir
end if
loop
next sp
next t
end sub
Starte das Makro aus einem neuem Tabellendokument.
Es bildet die Verzeichnisstruktur nicht so ab wie von dir gewünscht, ist aber vermtl. "allgemeintauglicher" - (und so wars auch leichter zu schreiben

)
Gruß karo
Verfasst: Mo, 05.03.2007 01:34
von Zahnerer
Danke Karolus,
ich werde das die nächsten Tage mal probieren. Ich melde mich dann wieder.
Zahnerer
Re: Auflistung eines Dateiverzeichnisses
Verfasst: Mo, 28.12.2020 15:49
von Alex Livingstone
@all: HI
Das Script/Makro funktioniert.
Danke @Karolus
Ich arbeite gerade an meinem ersten Computerspiel und Ich brauche eine "Besitzrecht-Rechnung". Dabei soll das Programm oder Makro einen Ordner einlesen und zu jeder Datei feststellen wieviel % es insgesamt sind.
Dafuer muss Ich dsas Script bearbeiten oder anpassen und Ich habe absolut noch keine Ahnung wie das funktioniert, vllt. koennt Ihr mir helfen. Das fertige Script gibt es dann am Ende.
Ueber einen guten Link dass mir alles erklaert wuerde Ich mich sehr freuen.