BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!
> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
Ordnerinhalt auflisten als Hyperlink ...
Ordnerinhalt auflisten als Hyperlink ...
Hallo liebe LibreOffice Community,
ich benutze erst seit kurzen LibreOffice. Eine Antwort auf mein Anliegen via Suchmaschine noch hier im Forum lieferten leider keine passenden Ergebnisse und ich hoffe ihr könnt mir helfen.
Folgendes:
Ich habe einen Ordner, in diesem sind auch Unterordner enthalten, darin natürlich Dateien.
Diese Dateien sollen nun aufgelistet und als Hyperlink ausgeben werden, wenn möglich über eine Schaltfläche.
Da sich die Dateien auch mal ändern, wäre es nicht schlecht, wenn vorher die Auflistung gelöscht wird wenn über die Schaltfläche neu eingelesen werden soll.
Ist so etwas mit LibreOffice Calc möglich?
Noch etwas: Ist es möglich, sobald also die Dateien als Hyperlink aufgelistet sind, sobald man auf die Verlinkung klickt das sich ein vorher im Code festgelegten Programm zu öffnen um die Datei anzuzeigen?
Z.b.: Die Verlinkung ist eine PDF, sobald man dort draufklickt öffnet sich ja der Adobe Reader. Es soll sich aber ein anderer PDF-Viewer öffnen.
Ich hoffe ich hab mich einigermaßen verständlich ausgedrückt.
Erstmal vielen Dank für eure Aufmerksamkeit und hoffe ihr könnt hierbei helfen.
Vielen Dank im voraus!!!
mfg
steven
ich benutze erst seit kurzen LibreOffice. Eine Antwort auf mein Anliegen via Suchmaschine noch hier im Forum lieferten leider keine passenden Ergebnisse und ich hoffe ihr könnt mir helfen.
Folgendes:
Ich habe einen Ordner, in diesem sind auch Unterordner enthalten, darin natürlich Dateien.
Diese Dateien sollen nun aufgelistet und als Hyperlink ausgeben werden, wenn möglich über eine Schaltfläche.
Da sich die Dateien auch mal ändern, wäre es nicht schlecht, wenn vorher die Auflistung gelöscht wird wenn über die Schaltfläche neu eingelesen werden soll.
Ist so etwas mit LibreOffice Calc möglich?
Noch etwas: Ist es möglich, sobald also die Dateien als Hyperlink aufgelistet sind, sobald man auf die Verlinkung klickt das sich ein vorher im Code festgelegten Programm zu öffnen um die Datei anzuzeigen?
Z.b.: Die Verlinkung ist eine PDF, sobald man dort draufklickt öffnet sich ja der Adobe Reader. Es soll sich aber ein anderer PDF-Viewer öffnen.
Ich hoffe ich hab mich einigermaßen verständlich ausgedrückt.
Erstmal vielen Dank für eure Aufmerksamkeit und hoffe ihr könnt hierbei helfen.
Vielen Dank im voraus!!!
mfg
steven
Re: Ordnerinhalt auflisten als Hyperlink ...
Folgendes Macro listet alle PDFs aus dem angebenen Order (und allen Unterordnern) auf.
Hyperlinks werden immer mit dem assoziierten Programm geöffnet. Musst Du also im Betriebssystem ändern.
Oder: Wenn eine Zeile ausgewählt ist, oder auch nur eine Zelle einer Zeile, dann öffnet folgendes Makro das PDF mit dem angegebenen Programm:
Code: Alles auswählen
sub PDF_Hyperlinks
dim liste()
Folderpath="E:\PDF" 'edit your path here
calc_delete_all
If (Not GlobalScope.BasicLibraries.isLibraryLoaded("Tools")) Then GlobalScope.BasicLibraries.LoadLibrary("Tools")
Tabelle = Thiscomponent.getSheets().getbyIndex(0)
getdirs( liste(),z, Folderpath)
i=0
For il = 0 to ubound(liste())
if GetFileNameExtension(liste(il))="pdf" then
Tabelle.getCellbyPosition(0,i).formulaLocal = "=HYPERLINK(" & chr(34) & ConvertFromURL(liste(il)) & chr(34) & ";" & chr(34) & ConvertFromURL(Filenameoutofpath(liste(il),"/")) & chr(34) &")"
i=i+1
end if
next il
rem---Tabelle sortieren
sortier_Tabelle(Tabelle,i)
end sub
sub calc_delete_all
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:SelectAll", "", 0, Array())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:ClearContents", "", 0, Array())
end sub
function getdirs( liste(),z, Folder)
on error goto skip
sFolderUrl = ConvertToUrl( Folder )
oSimpleFileAccess = createUnoService( "com.sun.star.ucb.SimpleFileAccess" )
aFolders = oSimpleFileAccess.getFolderContents( sFolderUrl,true )
For i = LBound( aFolders ) To UBound( aFolders )
sFile = aFolders( i )
If oSimpleFileAccess.isFolder( sFile ) Then
getdirs( liste(),z, sFile)
Else
redim preserve liste(z)
liste(z)=sFile
z=z+1
end if
next i
skip:
getdirs=z+1
end function
sub sortier_Tabelle(oTable,rows)
Dim SortProps(2) As new com.sun.star.beans.PropertyValue
Dim SortFeld(0) As new com.sun.star.table.TableSortField
SortierBereich = oTable.getCellRangeByName("A1:A"+rows)
SortFeld(0).Field = 0
SortFeld(0).IsAscending = True
SortFeld(0).FieldType = com.sun.star.util.SortFieldType.ALPHANUMERIC
SortProps(0).Name = "SortFields"
SortProps(0).Value = SortFeld()
SortProps(1).Name = "SortColumns"
SortProps(1).Value = False
SortProps(2).Name = "ContainsHeader"
SortProps(2).Value = False
SortierBereich.Sort(SortProps())
end sub
Oder: Wenn eine Zeile ausgewählt ist, oder auch nur eine Zelle einer Zeile, dann öffnet folgendes Makro das PDF mit dem angegebenen Programm:
Code: Alles auswählen
sub open_pdf_in_app
PDF_App="E:\Installationsprogramme\Sumatra\SumatraPDF.exe" 'edit this path
g = ThisComponent.CurrentSelection(0)
If g.supportsService("com.sun.star.table.Cell") Then
currentrow=g.getCellAddress().Row
else
currentrow=g.getRangeAddress().EndRow
end if
Tabelle = Thiscomponent.getSheets().getbyIndex(0)
sFormular= Tabelle.getCellbyPosition(0,currentrow).formulaLocal
sFormulararray= split(sFormular,"""")
PDF_path=sFormulararray(1)
Shell(PDF_App,0, """" & PDF_path & """", false)
end sub
- Dateianhänge
-
- PDF_Hyperlinks.ods
- Mit Mini Toolbar
- (10 KiB) 241-mal heruntergeladen
Win7 Pro, Sibelius 7.1.3, Lubuntu 15.10, LibO 4.4.7, OO 4.1.3
Free Project: LibreOffice Songbook Architect (LOSA)
http://struckkai.blogspot.de/2015/04/li ... itect.html
Free Project: LibreOffice Songbook Architect (LOSA)
http://struckkai.blogspot.de/2015/04/li ... itect.html
Re: Ordnerinhalt auflisten als Hyperlink ...
Hallo liebe Community,
hallo lieber User musikai,
sorry das ich jetzt erst Antworte.
Zunächst einmal vielen Dank für deine Antwort und gleich nochmal vielen lieben Dank für deine Codes & Beispiel-Datei. So einen Service hab ich nicht
erwartet.
Es funktioniert alles so wie ich es mir vorgestellt habe. D A N K E
mfg
steven
hallo lieber User musikai,
sorry das ich jetzt erst Antworte.
Zunächst einmal vielen Dank für deine Antwort und gleich nochmal vielen lieben Dank für deine Codes & Beispiel-Datei. So einen Service hab ich nicht
erwartet.
Es funktioniert alles so wie ich es mir vorgestellt habe. D A N K E
mfg
steven
Re: Ordnerinhalt auflisten als Hyperlink ...
Schön, dass es funktionert!
Kleine Verbesserung wäre noch, im ersten Macro folgende Zeile:
zu ersetzen mit
damit auch Dateien mit der Endung ".PDF" oder ".Pdf" etc. und nicht nur die kleingeschriebene Version ".pdf" gefunden werden.
Jaja, Details überall
Kleine Verbesserung wäre noch, im ersten Macro folgende Zeile:
Code: Alles auswählen
if GetFileNameExtension(liste(il))="pdf" then
Code: Alles auswählen
if lcase(GetFileNameExtension(liste(il)))="pdf" then
Jaja, Details überall
Win7 Pro, Sibelius 7.1.3, Lubuntu 15.10, LibO 4.4.7, OO 4.1.3
Free Project: LibreOffice Songbook Architect (LOSA)
http://struckkai.blogspot.de/2015/04/li ... itect.html
Free Project: LibreOffice Songbook Architect (LOSA)
http://struckkai.blogspot.de/2015/04/li ... itect.html
Re: Ordnerinhalt auflisten als Hyperlink ...
Weil ichs eh schonmal vorhatte, kommt hier der Nachfolger.
In der angehängten ods-Datei befindet sich eine Toolbar mit 4 Buttons. Man kann alle PDFs eines gewählten Ordners (optional mit Unterordnern) als Hyperlinks auflisten. Neben der Standard-Methode (strg-click auf Hyperlink) kann ein selbst-voreingestelltes Programm zum Öffnen verwendet werden.
Wenn man das Kommandozeilen-Programm pdftk installiert hat, hat man zusätzliche Funktionen zur Verfügung:
1.ListPDFs
Bitte die ersten Zeilen in Sub listPDFs anpassen, v.a. ob man pdftk benützt oder nicht
Es öffnet sich eine Ordner-Auswahl und bekommt eine Liste mit folgenden Einträgen:
Ohne pdftk:
Mit pdftk werden auch die Seitenzahlen und alle verfügbaren PDF-MetaDaten gelistet:
Wenn hinter einer PDF die Seitenzahl leer ist, dann wurde dieses PDF übersprungen, weil es z.B. passwortgeschützt ist.
2.open_pdf_in_app
Das PDF in dessen Zeile der Cursor steht wird in einem angegeben externen Programm geöffnet.
Bitte in der ersten Zeile in sub open_pdf_in_app den Pfad zum externen Programm angeben.
Die nächsten beiden Buttons funktionieren nur mit installiertem pdftk:
3.Write_Info_to_new_PDF(s)
Die Metadaten aller PDFs eines ausgewählten Bereichs werden in die PDFs geschrieben. Die Original-Datei wird in einen Unter-Ordner "!.OriginalPDFs" verschoben, sodass man immer auf der sicheren Seite bleibt. (Dieser Unterordner wird bei der Auflistung mit Button 1 stets ausgelassen)
Man kann auch eigene neue Meta-Daten-Felder (in der Kopfzeile) anlegen.Nur Ausgefüllte Zellen werden in ein neues PDF geschrieben.
PDFs ohne Seitenzahlen werden übersprungen, da diese höchstwahrscheinlich passwortgeschützt sind.
4.mergePDFs
Alle PDFs eines ausgewählten Bereichs werden in ein neues PDF zusammengesetzt. Diese hat den Namen "mergedPDFs.pdf" und befindet sich im Verzeichnis wie in Zelle A1 angegeben.
In der angehängten ods-Datei befindet sich eine Toolbar mit 4 Buttons. Man kann alle PDFs eines gewählten Ordners (optional mit Unterordnern) als Hyperlinks auflisten. Neben der Standard-Methode (strg-click auf Hyperlink) kann ein selbst-voreingestelltes Programm zum Öffnen verwendet werden.
Wenn man das Kommandozeilen-Programm pdftk installiert hat, hat man zusätzliche Funktionen zur Verfügung:
- Die Auflistung listet auch Seitenanzahl und Metadaten der PDFs auf.
- Man kann Metadaten zurück in PDFs schreiben.
- Man kann PDFs zusammenfügen. (merge)
1.ListPDFs
Bitte die ersten Zeilen in Sub listPDFs anpassen, v.a. ob man pdftk benützt oder nicht
Code: Alles auswählen
sub listPDFs
Folderpath="E:\PDF" 'edit your default path here
subdirs=1 'to not list subfolders use subdirs=0
pdftkapp="pdftk" 'if you don't use pdftk then use: pdftkapp=""
Ohne pdftk:
Code: Alles auswählen
Dateiname(mit Hyperlink) - Size
Code: Alles auswählen
Dateiname(mit Hyperlink) - Size - Pages - Title - Author - Subject - Keywords - ...
2.open_pdf_in_app
Das PDF in dessen Zeile der Cursor steht wird in einem angegeben externen Programm geöffnet.
Bitte in der ersten Zeile in sub open_pdf_in_app den Pfad zum externen Programm angeben.
Code: Alles auswählen
sub open_pdf_in_app
PDF_App="E:\Installationsprogramme\Sumatra\SumatraPDF.exe" 'edit this path
Die nächsten beiden Buttons funktionieren nur mit installiertem pdftk:
3.Write_Info_to_new_PDF(s)
Die Metadaten aller PDFs eines ausgewählten Bereichs werden in die PDFs geschrieben. Die Original-Datei wird in einen Unter-Ordner "!.OriginalPDFs" verschoben, sodass man immer auf der sicheren Seite bleibt. (Dieser Unterordner wird bei der Auflistung mit Button 1 stets ausgelassen)
Man kann auch eigene neue Meta-Daten-Felder (in der Kopfzeile) anlegen.Nur Ausgefüllte Zellen werden in ein neues PDF geschrieben.
PDFs ohne Seitenzahlen werden übersprungen, da diese höchstwahrscheinlich passwortgeschützt sind.
4.mergePDFs
Alle PDFs eines ausgewählten Bereichs werden in ein neues PDF zusammengesetzt. Diese hat den Namen "mergedPDFs.pdf" und befindet sich im Verzeichnis wie in Zelle A1 angegeben.
- Dateianhänge
-
- PDF_List.ods
- (13.41 KiB) 159-mal heruntergeladen
Win7 Pro, Sibelius 7.1.3, Lubuntu 15.10, LibO 4.4.7, OO 4.1.3
Free Project: LibreOffice Songbook Architect (LOSA)
http://struckkai.blogspot.de/2015/04/li ... itect.html
Free Project: LibreOffice Songbook Architect (LOSA)
http://struckkai.blogspot.de/2015/04/li ... itect.html
Re: Ordnerinhalt auflisten als Hyperlink ...
Hallo (mal wieder),
ich habe (wollte) obigen Code zum einlesen von PDF's nutzen um Dateilisten zu erstellen. Habe den Code soweit verändert das nun alle Dateien aufgelistet werden. So weit, so gut.
Da es mehrere Ordner gibt, sind auch mehrere Tabellenblätter vorhanden. Für jedes Tabellenblatt/Ordner gibt es ein Makro das per Schaltfläche angesprochen wird und den Inhalt des Ordners auflistet.
Das funktioniert FAST.
Sobald eine Datei gelöscht wird, wird eine andere komischerweise doppelt aufgelistet und sobald mal ein Ordner leer ist kommt ne Fehlermeldung. Auch habe ich das Gefühl das die vorhanden Datensätze vorher nicht richtig gelöscht werden bevor neu eingelesen wird -> Alles konnte ich auch mit obigen Code/Datei reproduzieren.
Ich würde den Code auch etwas mehr modifizieren: Kein Hyperlink, sondern einfach als Text.
In Spalte A möchte ich wie jetzt auch, nur den Dateinamen mit Endung und in Spalte B möchte ich den Pfad aufgelistet haben.
Und die Auflistung soll erst ab Zeile 4 beginnen, da ich noch im Bereich Zeile 2 mir eine Angabe vorstelle, wieviel Dateien der Ordner enthält, ungefähr so:
Sobald allerdings neu eingelesen werden soll sind auch die Angaben/Überschriften und ggf. Formeln weg.
Im Anhang findet sich noch eine Test-Datei.
Lg
steven
ich habe (wollte) obigen Code zum einlesen von PDF's nutzen um Dateilisten zu erstellen. Habe den Code soweit verändert das nun alle Dateien aufgelistet werden. So weit, so gut.
Da es mehrere Ordner gibt, sind auch mehrere Tabellenblätter vorhanden. Für jedes Tabellenblatt/Ordner gibt es ein Makro das per Schaltfläche angesprochen wird und den Inhalt des Ordners auflistet.
Das funktioniert FAST.
Sobald eine Datei gelöscht wird, wird eine andere komischerweise doppelt aufgelistet und sobald mal ein Ordner leer ist kommt ne Fehlermeldung. Auch habe ich das Gefühl das die vorhanden Datensätze vorher nicht richtig gelöscht werden bevor neu eingelesen wird -> Alles konnte ich auch mit obigen Code/Datei reproduzieren.
Ich würde den Code auch etwas mehr modifizieren: Kein Hyperlink, sondern einfach als Text.
In Spalte A möchte ich wie jetzt auch, nur den Dateinamen mit Endung und in Spalte B möchte ich den Pfad aufgelistet haben.
Und die Auflistung soll erst ab Zeile 4 beginnen, da ich noch im Bereich Zeile 2 mir eine Angabe vorstelle, wieviel Dateien der Ordner enthält, ungefähr so:
Sobald allerdings neu eingelesen werden soll sind auch die Angaben/Überschriften und ggf. Formeln weg.
Im Anhang findet sich noch eine Test-Datei.
Lg
steven
- Dateianhänge
-
- Test-Dateiliste.ods
- (14.64 KiB) 155-mal heruntergeladen
Re: Ordnerinhalt auflisten als Hyperlink ...
Hallo,
hier ist ein vergleichbares Thema (dasselbe?) aktiv: http://de.openoffice.info/viewtopic.php?f=18&t=74379
hier ist ein vergleichbares Thema (dasselbe?) aktiv: http://de.openoffice.info/viewtopic.php?f=18&t=74379
Gruß,
mikele
mikele
Re: Ordnerinhalt auflisten als Hyperlink ...
Hallo ihr lieben.
Bin die letzten Tage etwas weiter gekommen.
Habe mir zur Sicherheit ein zusätzliches Makro zum löschen des Inhalts erstellt. Die Aufzählung der Dateien geht nun auch automatisch.
Das einzigste was ich nicht hinkriege ist, das beim Pfad wirklich nur der Pfad ausgegeben wird und nicht noch der Dateiname.
Zumindest kann ich damit erstmal arbeiten.
Bin die letzten Tage etwas weiter gekommen.
Habe mir zur Sicherheit ein zusätzliches Makro zum löschen des Inhalts erstellt. Die Aufzählung der Dateien geht nun auch automatisch.
Das einzigste was ich nicht hinkriege ist, das beim Pfad wirklich nur der Pfad ausgegeben wird und nicht noch der Dateiname.
Zumindest kann ich damit erstmal arbeiten.
- Dateianhänge
-
- Dateiliste.ods
- (13.6 KiB) 184-mal heruntergeladen
Zuletzt geändert von steven84 am Mi 19. Feb 2020, 13:29, insgesamt 1-mal geändert.
Re: Ordnerinhalt auflisten als Hyperlink ...
Hallo steven84,
In Deinen Codes lädst Du diese bereits.
Hier ein Beispiel, wie der im Code angegebene Pfad, mittels der
Tools-Funktionen zerlegt und dann ausgegeben wird.
Das Ergebnis wird in einer Messagebox ausgegeben:
Nutze die Funktionen der mitgelieferten Tools-Bibliothek.steven84 hat geschrieben:Das einzigste was ich nicht hinkriege ist, das beim Pfad wirklich nur der Pfad ausgegeben wird und nicht noch der Dateiname.
In Deinen Codes lädst Du diese bereits.
Hier ein Beispiel, wie der im Code angegebene Pfad, mittels der
Tools-Funktionen zerlegt und dann ausgegeben wird.
Das Ergebnis wird in einer Messagebox ausgegeben:
Code: Alles auswählen
REM ***** BASIC *****
Sub ToolsFunktionen
sPath="C:\Temp\Dateiliste.ods"
If (Not GlobalScope.BasicLibraries.isLibraryLoaded("Tools")) Then GlobalScope.BasicLibraries.LoadLibrary("Tools")
' Dateiname mit Extension:
' Function FileNameoutofPath(ByVal Path as String, Optional Separator as String) as String
sFileName =FileNameoutofPath(sPath,"\")
' Dateiname ohne Extension
' Function GetFileNameWithoutExtension(ByVal FileName as String, Optional Separator as String)
sOnlyFileName = GetFileNameWithoutExtension(sFileName)
' Nur Extension
' Function GetFileNameExtension(ByVal FileName as String)
sExt=GetFileNameExtension(sFileName)
' Nur Pfad
' Function DirectoryNameoutofPath(sPath as String, Separator as String) as String
sDir= DirectoryNameoutofPath(sPath,"\")
Msgbox "Dateiname mit Extension: " & chr(10) & sFileName & chr(10) & chr(10) &_
"Dateiname ohne Extension: " & chr(10) & sOnlyFileName & chr(10) & chr(10) &_
"Nur Extension: " & chr(10) & sExt & chr(10) & chr(10) &_
"Nur Pfad: " & chr(10) & sDir & chr(10),64, "Funktionen aus der Tools-Bibliothek"
End Sub
Gruß
Craig
Nie die Sicherungskopie vergessen!
════════════════════════════════════════════════
WIN 10 Pro 64-Bit • LO 7.4.5.1 (x64) • AOO 4.1.8
Craig
Nie die Sicherungskopie vergessen!
════════════════════════════════════════════════
WIN 10 Pro 64-Bit • LO 7.4.5.1 (x64) • AOO 4.1.8
Re: Ordnerinhalt auflisten als Hyperlink ...
Hallo ihr lieben, hallo craig.
Danke für den Tipp!
Nachdem ich die Zeile:
in:
geändert habe wird jetzt auch nur noch der Pfad ausgegeben.
Zusätzlich musste ich im Code den Sortierbereich auf B erweitern, sonst werden Dateien in Ordnern angezeigt die gar nicht dort sind.
Habe die fertige Datei in meinem letzten Post mit Anhang neu angefügt.
An dieser Stelle will ich euch ganz herzlich danken für eure Unterstützung, Zeit und vor allem Geduld.
Danke für den Tipp!
Nachdem ich die Zeile:
Code: Alles auswählen
Tabelle.getCellbyPosition(1,i).formulaLocal = ConvertFromURL(liste(il))
Code: Alles auswählen
Tabelle.getCellbyPosition(1,i).formulaLocal = ConvertFromURL(DirectoryNameoutofPath(liste(il),"/"))
Zusätzlich musste ich im Code den Sortierbereich auf B erweitern, sonst werden Dateien in Ordnern angezeigt die gar nicht dort sind.
Habe die fertige Datei in meinem letzten Post mit Anhang neu angefügt.
An dieser Stelle will ich euch ganz herzlich danken für eure Unterstützung, Zeit und vor allem Geduld.
An alle, die das LibreOffice-Forum nutzen:
Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.
❤️ Vielen lieben Dank für Ihre Unterstützung ❤️