Hyperlinks per Makro aus Textdateilist einfügen
Verfasst: Mo 21. Sep 2015, 21:07
Hallo zusammen
ich bin hier neu und versuche mich gerade in der Makroprogrammierung. Ich möchte folgendes erreichen :
- aus einer Textdatei als Quelle der Hyperlinks die zeilenweise abarbeiten und im Dokument dann die Hyperlinks drinn haben. Das Ziel sollen dann Bilder sein die eingefügt wurden - später auch über ein Makro. Ich habe über den Makrorecorder das Einfügen eines Hyperlinks aufgezeichnet und dann folgendes Makro daraus gemacht. Die Zeilenumbrüche nach dem Einfügen des Hyperlinks werden ausgeführt NUR SIND KEINE Hyperlinks drinn.
Makroquellcode:
sub insertHyperlink_zuB '(StrTeile As Variant)
rem ----------------------------------------------------------------------
Dim n As Integer
Dim DateiNameHypListe As String
rem define variables
dim document as Object
dim dispatcher as Object
dim document1 as Object
dim dispatcher1 as Object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
rem document und dispatcher in document1 und dispatcher1 retten
rem damit sie wieder neu zugewiesen werden können
rem ----------------------------------------------------------------------
document1 = document
dispatcher1 = dispatcher
dim args1(4) as new com.sun.star.beans.PropertyValue
dim args2(4) as new com.sun.star.beans.PropertyValue
dim args3(1) as new com.sun.star.beans.PropertyValue
rem ----------------------------------------------------------------------
rem datei zeileweise einlesen und dir zeile zum hyperlink verarbeiten
n = FreeFile()
DateiNameHypListe = ""
DateiNameHypListe="C:\!tmp\hyperlinkliste.txt"
' msgbox DateiName
DateiNameHypListe =ConvertToURL(DateiNameHypListe)
Open DateiNameHypListe For Output Access Read As #n
While Not EOF(n)
Line Input #n, StrZeile
REM Inhalt von StrZeile ist wie folgt:
REM Hyperlink.text;zu Bild 1;Hyperlink.URL;#Bild1|graphic;Hyperlink.Target;1;Hyperlink.Name;zu Bild 1;Hyperlink.Type;1
REM zerlegen der Zeile in das Array StrZeile
StrTeile = Split(StrZeile, ";")
rem ----------------------------------------------------------------------
rem document = ThisComponent.CurrentController.Frame
rem dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
document = document1
dispatcher = dispatcher1
rem dim args1(4) as new com.sun.star.beans.PropertyValue
rem ----------------------------------------------------------------------
rem werte zuweisen
args1(0).Name = StrTeile(0) '"Hyperlink.Text"
args1(0).Value = StrTeile(1) '"#Bild3|graphic"
args1(1).Name = StrTeile(2) '"Hyperlink.URL"
args1(1).Value = StrTeile(3) '"#Bild3|graphic"
args1(2).Name = StrTeile(4) '"Hyperlink.Target"
args1(2).Value = StrTeile(5) ' ""
args1(3).Name = StrTeile(6) '"Hyperlink.Name"
args1(3).Value = StrTeile(7) ' "zu Bild 3"
args1(4).Name = StrTeile(8) '"Hyperlink.Type"
args1(4).Value = StrTeile(9) '1
'msgBox args1(0).value
dispatcher.executeDispatch(document, ".uno:SetHyperlink", "", 0, args1())
rem ----------------------------------------------------------------------
rem werte zuweisen
'dim args2(4) as new com.sun.star.beans.PropertyValue
args2(0).Name = StrTeile(0) ' "Hyperlink.Text"
args2(0).Value = StrTeile(1) ' "#Bild3|graphic"
args2(1).Name = StrTeile(2) '"Hyperlink.URL"
args2(1).Value = StrTeile(3) ' "#Bild3|graphic"
args2(2).Name = StrTeile(4) ' "Hyperlink.Target"
args2(2).Value = StrTeile(5) ' ""
args2(3).Name = StrTeile(6) '"Hyperlink.Name"
args2(3).Value = StrTeile(7) '"zu Bild 3"
args2(4).Name = StrTeile(8) '"Hyperlink.Type"
args2(4).Value = StrTeile(9) '1
dispatcher.executeDispatch(document, ".uno:SetHyperlink", "", 0, args2())
rem ----------------------------------------------------------------------
'dim args3(1) as new com.sun.star.beans.PropertyValue
args3(0).Name = "Count"
args3(0).Value = 1
args3(1).Name = "Select"
args3(1).Value = false
dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, args3())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:InsertPara", "", 0, Array())
Wend
rem ----------------------------------------------------------------------
rem hier ende der datei erreicht
Close #n
end Sub
Das war eine Textdatei insertHyperlink_zuB.txt konnte ich nicht Anhängen.
Hyperlinks sind dann nicht im LibreOffice-Dokument drinn, ich verwende Version 4.4.5.2 unter Windows 7 64-Bit.
Kann mir bitte jemand einen Tipp geben warum es nicht funktioniert.
Gruß Roland "chemnitzer"
ich bin hier neu und versuche mich gerade in der Makroprogrammierung. Ich möchte folgendes erreichen :
- aus einer Textdatei als Quelle der Hyperlinks die zeilenweise abarbeiten und im Dokument dann die Hyperlinks drinn haben. Das Ziel sollen dann Bilder sein die eingefügt wurden - später auch über ein Makro. Ich habe über den Makrorecorder das Einfügen eines Hyperlinks aufgezeichnet und dann folgendes Makro daraus gemacht. Die Zeilenumbrüche nach dem Einfügen des Hyperlinks werden ausgeführt NUR SIND KEINE Hyperlinks drinn.
Makroquellcode:
sub insertHyperlink_zuB '(StrTeile As Variant)
rem ----------------------------------------------------------------------
Dim n As Integer
Dim DateiNameHypListe As String
rem define variables
dim document as Object
dim dispatcher as Object
dim document1 as Object
dim dispatcher1 as Object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
rem document und dispatcher in document1 und dispatcher1 retten
rem damit sie wieder neu zugewiesen werden können
rem ----------------------------------------------------------------------
document1 = document
dispatcher1 = dispatcher
dim args1(4) as new com.sun.star.beans.PropertyValue
dim args2(4) as new com.sun.star.beans.PropertyValue
dim args3(1) as new com.sun.star.beans.PropertyValue
rem ----------------------------------------------------------------------
rem datei zeileweise einlesen und dir zeile zum hyperlink verarbeiten
n = FreeFile()
DateiNameHypListe = ""
DateiNameHypListe="C:\!tmp\hyperlinkliste.txt"
' msgbox DateiName
DateiNameHypListe =ConvertToURL(DateiNameHypListe)
Open DateiNameHypListe For Output Access Read As #n
While Not EOF(n)
Line Input #n, StrZeile
REM Inhalt von StrZeile ist wie folgt:
REM Hyperlink.text;zu Bild 1;Hyperlink.URL;#Bild1|graphic;Hyperlink.Target;1;Hyperlink.Name;zu Bild 1;Hyperlink.Type;1
REM zerlegen der Zeile in das Array StrZeile
StrTeile = Split(StrZeile, ";")
rem ----------------------------------------------------------------------
rem document = ThisComponent.CurrentController.Frame
rem dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
document = document1
dispatcher = dispatcher1
rem dim args1(4) as new com.sun.star.beans.PropertyValue
rem ----------------------------------------------------------------------
rem werte zuweisen
args1(0).Name = StrTeile(0) '"Hyperlink.Text"
args1(0).Value = StrTeile(1) '"#Bild3|graphic"
args1(1).Name = StrTeile(2) '"Hyperlink.URL"
args1(1).Value = StrTeile(3) '"#Bild3|graphic"
args1(2).Name = StrTeile(4) '"Hyperlink.Target"
args1(2).Value = StrTeile(5) ' ""
args1(3).Name = StrTeile(6) '"Hyperlink.Name"
args1(3).Value = StrTeile(7) ' "zu Bild 3"
args1(4).Name = StrTeile(8) '"Hyperlink.Type"
args1(4).Value = StrTeile(9) '1
'msgBox args1(0).value
dispatcher.executeDispatch(document, ".uno:SetHyperlink", "", 0, args1())
rem ----------------------------------------------------------------------
rem werte zuweisen
'dim args2(4) as new com.sun.star.beans.PropertyValue
args2(0).Name = StrTeile(0) ' "Hyperlink.Text"
args2(0).Value = StrTeile(1) ' "#Bild3|graphic"
args2(1).Name = StrTeile(2) '"Hyperlink.URL"
args2(1).Value = StrTeile(3) ' "#Bild3|graphic"
args2(2).Name = StrTeile(4) ' "Hyperlink.Target"
args2(2).Value = StrTeile(5) ' ""
args2(3).Name = StrTeile(6) '"Hyperlink.Name"
args2(3).Value = StrTeile(7) '"zu Bild 3"
args2(4).Name = StrTeile(8) '"Hyperlink.Type"
args2(4).Value = StrTeile(9) '1
dispatcher.executeDispatch(document, ".uno:SetHyperlink", "", 0, args2())
rem ----------------------------------------------------------------------
'dim args3(1) as new com.sun.star.beans.PropertyValue
args3(0).Name = "Count"
args3(0).Value = 1
args3(1).Name = "Select"
args3(1).Value = false
dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, args3())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:InsertPara", "", 0, Array())
Wend
rem ----------------------------------------------------------------------
rem hier ende der datei erreicht
Close #n
end Sub
Das war eine Textdatei insertHyperlink_zuB.txt konnte ich nicht Anhängen.
Hyperlinks sind dann nicht im LibreOffice-Dokument drinn, ich verwende Version 4.4.5.2 unter Windows 7 64-Bit.
Kann mir bitte jemand einen Tipp geben warum es nicht funktioniert.
Gruß Roland "chemnitzer"