von Karolus » Fr, 02.03.2007 11:16
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
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]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[/code]
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 :D )
Gruß karo