ich komme vom Latex und bin es gewohnt mich nicht wirklich um die Einbindung von Grafiken zu kümmern. Nun muss ich aber writer nehmen um etwas längeres zu schreiben und will mir die Arbeit so bequem wie möglich machen. Dazu muss ich also in die Makros reinschnuppern, möglichst ohne mit der Maus dauernd in Menüs suchen zu müssen.
Als Übungsobjekt versuche ich mich an einem Makro das ein Bild einfügt, die Bildunterschrift ändert und Formatiert. Das sieht nach einigem gehacke und code-klau so aus:
Code: Alles auswählen
Function GetAFileName(Filternames()) As String
Dim oFileDialog as Object
Dim iAccept as Integer
Dim sPath as String
Dim InitPath as String
Dim RefControlName as String
Dim oUcb as object
'Dim ListAny(0)
GlobalScope.BasicLibraries.LoadLibrary("Tools")
'Note: The following services must be called in the following order,
' otherwise the FileDialog Service is not removed.
oFileDialog = CreateUnoService("com.sun.star.ui.dialogs.FilePicker")
' Defaults to Open, you can also use Save
'oFileDialog.Initialize( _
' Array(com.sun.star.ui.dialogs.TemplateDescription.FILESAVE_SIMPLE))
oUcb = createUnoService("com.sun.star.ucb.SimpleFileAccess")
'ListAny(0) = _
' com.sun.star.ui.dialogs.TemplateDescription.FILEOPEN_SIMPLE
'oFileDialog.initialize(ListAny())
AddFiltersToDialog(FilterNames(), oFileDialog)
'Set your initial path here!
InitPath = ConvertToUrl("/home/cw/texte/buchV4/Abbildungen/")
oFileDialog.SetDisplayDirectory(InitPath)
iAccept = oFileDialog.Execute()
If iAccept = 1 Then
sPath = oFileDialog.Files(0)
GetAFileName = sPath
End If
oFileDialog.Dispose()
End Function
sub InsertGraphic
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
Dim filterNames(1) As String
filterNames(0) = "*.png"
filterNames(1) = "*.jpg"
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args1(3) as new com.sun.star.beans.PropertyValue
args1(0).Name = "FileName"
args1(0).Value = GetAFileName(filterNames())
args1(1).Name = "FilterName"
args1(1).Value = "<Alle Formate>"
args1(2).Name = "AsLink"
args1(2).Value = false
args1(3).Name = "Style"
args1(3).Value = "Grafik"
dispatcher.executeDispatch(document, ".uno:InsertGraphic", "", 0, args1())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:InsertCaptionDialog", "", 0, Array())
rem ----------------------------------------------------------------------
dim args4(1) as new com.sun.star.beans.PropertyValue
args4(0).Name = "Template"
args4(0).Value = "Marginal-Abb."
args4(1).Name = "Family"
args4(1).Value = 2
dispatcher.executeDispatch(document, ".uno:StyleApply", "", 0, args4())
end sub
- ich würde später gern noch etwas an der Grafik machen, wie bekomme ich die zuletzt eingefügte Grafik oder ein Liste aller Grafiken (ich habe sowas schon mal gesehen aber finde den Link nicht mehr mangels Suchbegriffen)
- ich würde mir gerne den zuletzt genutzten Pfad merken (am besten per Dokument) damit man schneller wieder dort ist wo die Bilder liegen, der Standardfiledialog schein das nicht zu leisten?!
- ich würde auch gerne auf die passende Bildunterschrift zugreifen habe aber keine Ahnung wie (der dispatch uno:InsertCaptionDialog geht zwar aber wieso ;-?)
Generelle Kommentare zu "meinem" Code und so sind natürlich auch gern gesehen.
Gruß,
Carsten