Ich habe mal wieder ein kleines Problemchen, bei dem ich nicht erkennen kann, wo das Fehlerteufelchen sitzt.
Folgendes Makro, ausgelöst durch Klick auf eine Schaltfläche, öffnet zunächst einen Datei-Auswahldialog zum Einfügen einer Grafik.
Wenn das eingefügte Bild bestimmte Maße überschreitet, soll es nicht skaliert, sondern nach einem Hinweis wieder gelöscht werden.
Das funktioniert auch.
ABER:
Sobald die Grafik entfernt wurde, stürzt OO komplett ab !
Beim ersten Mal konnte ich OO erst nach einem Reboot wieder ausführen.
Ausführung in OO 3.0. CALC unter Windows Vista.
Hier der Code:
Code: Alles auswählen
Sub BildEin
DialogOpen=createunoservice("com.sun.star.ui.dialogs.FilePicker")
with DialogOpen
.setMultiSelectionMode(false)
.setDisplayDirectory(converttourl("c:\test\bilder"))
.setTitle("Bitte Datei auswählen:")
end with
Ausgabe = DialogOpen.execute
if Ausgabe = 0 Then goto Ende
'convert-Befehl nur, weil der Name noch weiter verarbeitet wird:
FileName = convertfromurl(DialogOpen.Files(0))
'ausgewählte Grafik einfügen:
dim document as object
dim dispatcher as object
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args1(2) as new com.sun.star.beans.PropertyValue
args1(0).Name = "FileName"
args1(0).Value = converttourl(FileName)
args1(2).Name = "AsLink"
args1(2).Value = false
dispatcher.executeDispatch(document, ".uno:InsertGraphic", "", 0, args1())
'zu einem späteren Zeitpunkt Grafik suchen und Größe prüfen
Doc = ThisComponent
mysheet = Doc.Sheets(0)
Page = mysheet.drawPage
Dim Point As New com.sun.star.awt.Point
Dim Size As New com.sun.star.awt.Size
for i = 1 to Page.Count
Grafik = doc.createInstance("com.sun.star.drawing.GraphicObjectShape")
Grafik = Page.getByIndex(i-1)
if left(Grafik.Name,3) <> "qq_" then
if Grafik.Size.Width>5000 or Grafik.Size.Height>5000 then
msgbox ("Die ausgewählte Grafik ist zu groß.",16,"FEHLER")
Page.remove(Grafik)
end if
end if
next i
'zu einem späteren Zeitpunkt Grafik suchen, benennen und positionieren
for i = 1 to Page.Count
Grafik = doc.createInstance("com.sun.star.drawing.GraphicObjectShape")
Grafik = Page.getByIndex(i-1)
if left(Grafik.Name,3) <> "qq_" then
Grafik.Name="qq_BILD_A"
Point.x = 6000
Point.y = 0
Grafik.Position = Point
Grafik.MoveProtect = true
Grafik.SizeProtect = true
end if
next i
End Sub
Kann da jemand helfen ?
Danke !