Hyperlink folgen

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Hyperlink folgen

Beitrag von clag »

Hallo Kenner und Könner,

in einer Calc Tabelle habe ich Hyperlinks die auf ein Writer Dokument+Sprungmarke zeigen.
Der Hyperlink wird durch eine Formel erzeugt z.B.
=HYPERLINK("file:///G:/2014-11/01/Mydaily%20view%20-%202014-11-01.odt"&M46;C46)
M46
enthält die Sprungmarke

Da die Tabelle sehr breit ist muss man ewig scrollen um den link zu finden
Ich möchte nun per Doppelklick irgendwo in die Zeile diesen Hyperlink ansprechen.

Wie muss der Basic Code aussehen, damit ich diesen Hyperlink in OOBasic ansprechen und folgen kann,
so das die Makroaktion dem anklicken dieses Link entspricht, also
Writer Dokument öffnen, bzw in den Vordergrund holen und den Cursor auf die Sprungmarke setzen?

und schonmal Danke für's lesen.
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: Hyperlink folgen

Beitrag von Karolus »

Hallo

dateien oeffnen

an die url musst du nur noch "#" & den Inhalt aus M46 anhängen.

Code: Alles auswählen

import uno

ctx = uno.getComponentContext()
servicemanager = ctx.ServiceManager
createUnoService = servicemanager.createInstance

desktop = createUnoService("com.sun.star.frame.Desktop")


def open_at_(event):
    sheet = event.Spreadsheet
    row = event.CellAddress.Row
    if row != 45:
        return
    marke = sheet.getCellRangeByName('M46').String
    url = "file:///G:/2014-11/01/Mydaily%20view%20-%202014-11-01.odt"
    doc = desktop.loadComponentFromURL('%s#%s' %(url, marke),'_blanc',0,())
    desktop.setActiveFrame(doc.CurrentController.Frame) 
oder vielleicht doch:

Code: Alles auswählen

import subprocess


def open_at_(event):
    sheet = event.Spreadsheet
    row = event.CellAddress.Row
    if row != 45:
        return
    marke = sheet.getCellRangeByName('M46').String
    url = "file:///G:/2014-11/01/Mydaily%20view%20-%202014-11-01.odt"
    subprocess.Popen( ['soffice' ,'%s#%s' %(url, marke) ] )
     
``soffice`` in der unteren Variante muss ggf. durch den kompletten Pfad zur soffice[.exe] ersetzt werden



Karolus
Zuletzt geändert von Karolus am Di, 13.01.2015 15:08, insgesamt 1-mal geändert.
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Hyperlink folgen

Beitrag von clag »

Hallo Karolus,

das sieht kurz und Chic aus!
Werde gleich mal probieren ob ich das in meinen Code eingebaut bekomme.

besten Dank dafür
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Hyperlink folgen

Beitrag von clag »

Hallo Kenner und Könner,

ich hatte ja gehofft man könnte den CalcFormel generierten Link irgendwie direkt ansprechen
(einen "Mausklick" für den auf den Link platzierten Viewcursor generieren oder so ) aber das war wohl nix ;)

Stattdessen ist es die normale Datei öffnen Prozedur, oK das habe ich jetzt soweit
einschließlich der Prüfung ob die Datei bereits geöffnet ist.


Was ich noch nicht hin bekomme, ist vom Calc-Dokument auf das bereits geöffnete Writer-Dokument zu wechseln
und dort den ViewCursor auf die Sprungmarke (gleich der einer aus dem Inhaltsverzeichnis) platzieren.

Kann mir da noch jemand mit die Beispiel-Code auf die Basic-Sprünge helfen ?
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: Hyperlink folgen

Beitrag von Karolus »

Hallo

Schau dir die (nachgereichte) Variante an, und übersetze das nach Basic.

Karolus
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Antworten