BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!

❤️ DANKE >><< DANKE ❤️

> 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. 🤗

Calc: URL relativ zum Dateisystem speichern

CALC ist die Tabellenkalkulation, die Sie immer wollten.
Antworten
RainerTeubner
Beiträge: 14
Registriert: Do 23. Jun 2011, 23:04

Calc: URL relativ zum Dateisystem speichern

Beitrag von RainerTeubner » So 10. Aug 2014, 22:20

Hallo,

ich benutze LibreOffice 4.3.0.4 unter Windows 7/64 bit.

Ich habe mir die Festplatte neu partitioniert, in eine vorhandene Systempartition und eine neu angelegte Datenpartition, und meine Daten von der Systempartition auf die neu geschaffene Datenpartition verschoben.

Leider vollziehen die in einer Calc-Tabelle relativ zum Dateisystem gespeicherten Hyperlinks (Häkchen ist bei den Optionen gesetzt) den Umzug nicht nach. Die alten Links auf die Dateien auf der Systempartition bleiben erhalten und führen ins Nirwana.

Es handelt sich bei der Tabelle (ca. 10.000 Datensätze) um eine Tabelle mit bibliographischen Daten (Jahr, Band, Seite, Autor, Titel etc.) von Zeitschriftenartikeln, die als pdf-Dateien im selben Oberverzeichnis wie das Inhaltsverzeichnis gespeichert sind.

Was muß ich tun, damit die Hyperlinks wieder so funktionieren, wie sie sollen?

Mit freundlichen Grüßen

Rainer Teubner

Benutzeravatar
karolus
Beiträge: 2170
Registriert: Fr 10. Dez 2010, 10:01

Re: Calc: URL relativ zum Dateisystem speichern

Beitrag von karolus » So 10. Aug 2014, 22:46

Hallo

Sind die Links per →einfügen→Hyperlink erzeugt worden oder per Calcformel =HYPERLINK(...)
?
Karolus
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.3.2 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

RainerTeubner
Beiträge: 14
Registriert: Do 23. Jun 2011, 23:04

Re: Calc: URL relativ zum Dateisystem speichern

Beitrag von RainerTeubner » Mo 11. Aug 2014, 09:40

Hallo karolus,

die Links wurden per "Einfügen" ... "Hyperlink" erzeugt und nicht über die Formel.

Viele Grüße

Rainer Teubner

Benutzeravatar
karolus
Beiträge: 2170
Registriert: Fr 10. Dez 2010, 10:01

Re: Calc: URL relativ zum Dateisystem speichern

Beitrag von karolus » Mo 11. Aug 2014, 17:45

Hallo

Hier ist ein Script zum reparieren der Links:

Code: Alles auswählen

import uno
from os import path


ctx = uno.getComponentContext()
servicemanager = ctx.ServiceManager
createUnoService = servicemanager.createInstance
file_access = createUnoService("com.sun.star.ucb.SimpleFileAccess")
pathsubstution = createUnoService("com.sun.star.util.PathSubstitution")




def install_me(*_):
    """
    Funktion zum kopieren dieses eingebetteten Pythonscripts
    ins den .userconfig_python_pfad"""

    pythonfolder = pathsubstution.substituteVariables('$(user)/Scripts/python/',0)
    filename = path.basename(__file__)
    if not file_access.isFolder( pythonfolder):
        file_access.createFolder(pythonfolder)
    file_access.copy(__file__, path.join( pythonfolder, filename))



def repariere_hyperlinks():
    doc = XSCRIPTCONTEXT.getDocument()
    sel = doc.getCurrentSelection()
    basedir, _ = path.split(doc.URL)
    for c in range(sel.Columns.Count):
        for r in range(sel.Rows.Count):
            try:
                textfield = sel.getCellByPosition(c, r).TextFields.getByIndex(0)
                head, tail = path.split(textfield.URL)
                textfield.URL = path.join(basedir, tail)
            except:
                pass
Kopiere den Code in eine TextDatei namens z.B. link.py in dein ~$Benutzerverzeichnis/Scripts/python/
oder installiere es über den Button im angehängten Document.
linkinstaller.ods
(12.89 KiB) 197-mal heruntergeladen
Aus deiner Übersichts.ods musst du dann zuerst den Bereich mit den kaputten Links markieren und dann
→Extras→Makros→Makros ausführen→Meine Makros→link→repariere_hyperlinks
ausführen.

Karolus
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.3.2 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

RainerTeubner
Beiträge: 14
Registriert: Do 23. Jun 2011, 23:04

Re: Calc: URL relativ zum Dateisystem speichern

Beitrag von RainerTeubner » Di 12. Aug 2014, 16:54

Hallo karolus,

vielen Dank für Dein Skript.

Leider funktioniert es nicht. Ich kann es herunterladen und installieren, es fängt auch an zu arbeiten, um kurz darauf mit der nicht sehr spezifischen Fehlermeldung "Fatal Error" hängen zu bleiben.

Ich habe inzwischen auf LO 4.2.6.2 downgegraded in der Hoffnung, daß der relative/absolute Pfade- Fehler in dieser Version nicht auftaucht, leider vergeblich.

Viele Grüße

Rainer Teubner

Benutzeravatar
karolus
Beiträge: 2170
Registriert: Fr 10. Dez 2010, 10:01

Re: Calc: URL relativ zum Dateisystem speichern

Beitrag von karolus » Di 12. Aug 2014, 22:43

Hallo
RainerTeubner hat geschrieben:Hallo karolus,

vielen Dank für Dein Skript.

Leider funktioniert es nicht. Ich kann es herunterladen und installieren, es fängt auch an zu arbeiten, um kurz darauf mit der nicht sehr spezifischen Fehlermeldung "Fatal Error" hängen zu bleiben.
was genau bedeuted hier ..."es fängt an zu arbeiten"... -werden ein paar Links reapariert oder tut sich in der Hinsicht gar nichts
RainerTeubner hat geschrieben:Ich habe inzwischen auf LO 4.2.6.2 downgegraded in der Hoffnung, daß der relative/absolute Pfade- Fehler in dieser Version nicht auftaucht, leider vergeblich.
Ein nachträglicher Wechsel zu einer eventuell Funktionierenden Version bringt ja nichts, die Links sind ja jetzt in dem Dokument schon kaputt.
Versuchs doch noch mal mit folgender Variante:

Code: Alles auswählen

def repariere_hyperlinks():
    doc = XSCRIPTCONTEXT.getDocument()
    sel = doc.getCurrentSelection()
    basedir, _ = path.split(doc.URL)
    for c in range(sel.Columns.Count):
        for r in range(sel.Rows.Count):
            if sel.getCellByPosition(c, r).TextFields.Count:
                textfield = sel.getCellByPosition(c, r).TextFields.getByIndex(0)
                head, tail = path.split(textfield.URL)
                textfield.URL = path.join(basedir, tail)
 
hier das neue Dokument zum installieren
linkinstaller_2.ods
(12.85 KiB) 250-mal heruntergeladen
Karolus
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.3.2 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

RainerTeubner
Beiträge: 14
Registriert: Do 23. Jun 2011, 23:04

Re: Calc: URL relativ zum Dateisystem speichern

Beitrag von RainerTeubner » Mi 13. Aug 2014, 18:41

Hallo Karolus,

ich habe Dein neues Macro ebenfalls installiert, die Pfade in den Hyperlinks bleiben leider unverändert.

Auch mit dem alten Macro blieben die Hyperlinks unverändert. "Fängt an zu arbeiten" bedeutet hier, daß ein kurzer Augenblick vergeht, bis die Fehlermeldung auf dem Bildschirm erscheint.

Was mich etwas verwundert, ist die Tatsache, daß die Optionen, die Hyperlinks absolut oder relativ zu speichern, in einer früheren Version (leider weiß ich die Version nicht mehr) funktioniert hat.

Mit freundlichen Grüßen

Rainer Teubner

Benutzeravatar
karolus
Beiträge: 2170
Registriert: Fr 10. Dez 2010, 10:01

Re: Calc: URL relativ zum Dateisystem speichern

Beitrag von karolus » Mi 13. Aug 2014, 20:56

Hallo

Da bin ich jetzt überfragt, eine Fehlermeldung kann ich weder unter Linux noch in einer Windows-VM provozieren, allerdings wurde in der VM der letzte Pfadtrenner unterschlagen, vmtl. weil die Testdatei dort direkt unterhalb von E: lag.
deshalb hier nochmal Version 3:

Code: Alles auswählen

def repariere_hyperlinks():
    doc = XSCRIPTCONTEXT.getDocument()
    sel = doc.getCurrentSelection()
    basedir, _ = path.split(doc.URL)
    for c in range(sel.Columns.Count):
        for r in range(sel.Rows.Count):
            if sel.getCellByPosition(c, r).TextFields.Count:
                textfield = sel.getCellByPosition(c, r).TextFields.getByIndex(0)
                head, tail = path.split(textfield.URL)
                textfield.URL = path.join(r'{}/'.format( basedir ), r'{}'.format( tail ) ) 
linkinstaller_3.ods
(14.05 KiB) 177-mal heruntergeladen
Karolus
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.3.2 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

RainerTeubner
Beiträge: 14
Registriert: Do 23. Jun 2011, 23:04

Re: Calc: URL relativ zum Dateisystem speichern

Beitrag von RainerTeubner » Do 14. Aug 2014, 20:01

Hallo Karolus,

jetzt funktioniert das Makro (Version 3), vielen Dank!

Der Pfad zu den Dateien wird auf das eingestellte Arbeitsverzeichnis von LO umgebogen. (file:///D:/Office/filename.pdf) Da liegen die Dateien allerdings nicht, sondern unter D:/Verzeichnis1/Unterverzeichnis1.1/Unterverzeichnis1.1.1/Unterverzeichnis1.1.1.1/filename.pdf.

Das letzte Verzeichnis hat noch nebengeornete Unterverzeichnisse, auf die ich auch verzichten könnten. Ich werde also die Struktur vereinfachen.

Wenn ich das gesamte Verzeichnis auf einen USB-Stick kopiere und dann die Inhaltsverzeichnisdatei auf dem USB-Stick aufrufe und das Makro nochmal installiere, dann tut sich nichts, d.h. die Hyperlinks im Inhaltsverzeichnis bleiben unverändert. (Versuch 1)

Wie bekome ich alle Pfade so hingbogen, daß es paßt? Geht das überhaupt?

Ich habe jetzt alle Dateien aus den Unterordnern und Unterunterordner in ein Verzeichnis kopiert, die Inhaltsverzeichnisdatei liegt im selben Verzeichnis. (Versuch 2)
Mit der vereinfachten Dateistruktur hats geklappt. Liegt das Verzeichnis mit Dateien und Ihnaltsverzeichnis auf dem USB-Stick, funktioniert es. Kopiere ich das Verzeichnis auf die Festplatte, funktioniert das makro ebenfalls und die Links stimmen.

Vielen Dank!

Rainer Teubner

Benutzeravatar
karolus
Beiträge: 2170
Registriert: Fr 10. Dez 2010, 10:01

Re: Calc: URL relativ zum Dateisystem speichern

Beitrag von karolus » Do 14. Aug 2014, 20:38

Hallo

Ich war bisher aufgrund deines Ausgangsposts davon ausgegangen das die Übersichtsdatei nebst allen verlinkten .pdf-dateien im gleichen Verzeichnis liegt - aber du hast das ja jetzt gerichtet.
Schön, das es letztlich mit vertretbarem Aufwand funktioniert.

Karolus
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.3.2 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

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 ❤️

Antworten