Auflistung eines Dateiverzeichnisses
Moderator: Moderatoren
Auflistung eines Dateiverzeichnisses
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
			
			
									
						
										
						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
Hallo Zahnerer
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 hierviewtopic.php?t=4433&highlight=verzeichniss)
Falls Windows ? bitte die beiden Pfad-zeilen umkommentieren.
Gruß Karo
			
			
									
						
										
						zb. in OOo-basic und Javaeigentlich ist diese Frage wahrscheinlich im Calc-Forum verkehrt, aber ehrlich gesagt, weiß ich nicht recht, wo ich sie stellen soll.
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 hierviewtopic.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 Gruß Karo
Hey Zahnerer,
na, da liefere ich dir doch gleich noch einen Code dazu:
Viele Grüße
Thomas
			
			
									
						
							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 SubThomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
			
						Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
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
			
			
									
						
										
						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):
- Ordner 2007
- Ordner Januar
- Ordner 15ter
- Datei A
 
- Datei B
 
- Datei C
 
 
- Ordner 23ter
- Datei D
 
 
- Ordner 28ter
- Datei E
 
- Datei F
 
 
- Datei G
 
 - Ordner 15ter
 
- Ordner Februar
- Ordner 1ter
- Datei H
 
- Datei I
 
 
- Ordner 5ter
- Datei J
 
 
 - Ordner 1ter
 
 - Ordner Januar
 
Dank für die Hilfe und Antworten, Zahnerer
Hallo Zahnerer
Kopier mal folgendes nach:
-->Extras-->Makros-->Makros verwalten-->OOo-basic
'meine Makros'--Standard--"neues Modul"[1]
[1]erstellen über Schaltfläche 'neu
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
			
			
									
						
										
						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 subStarte 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
- 
				Alex Livingstone
 - Beiträge: 1
 - Registriert: Mo, 28.12.2020 15:42
 
Re: Auflistung eines Dateiverzeichnisses
@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.
			
			
									
						
										
						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.