ich habe eine PDF-Datei eingelesen und diese Übersetzung als Draw-Datei abgelegt.
Nun möchte ich diese Draw-Datei die nach der Übersetzung aus vielen Textrahmen besteht
in eine echte Writer-Datei überführen, indem ich die einzelnen Textrahmen auslese.
Nachdem ich die Draw-Datei per Makro angewählt habe un diese sich auch öffnet, möchte ich
die Inhalte der Textrahmen auslesen.
Hier scheitere ich daran, dass die Anweisung "ThisCompunent" sich auf die Makro-Seite und nicht
wie von mir gewünscht auf das geöffnete Draw-Dokument bezieht.
Wie mache ich das Draw-Dokument per Makro zum "ThisCompunent" ?
Meinen Quellcode lege ich mal bei.
Code: Alles auswählen
Sub Textfelder_auslesen
Dim oFilePicker As Object, oDoc as Object, FileName As String
Dim oQuelldatei as Object, oDrawPage As Object, oShape As Object, oText As Object
Dim i As Integer
FileName = ""
'FilePicker initialization
oFilePicker = CreateUnoService("com.sun.star.ui.dialogs.FilePicker")
oFilePicker.DisplayDirectory = ConvertToURL("C:\Path\To\SomeDir")
oFilePicker.appendFilter("Draw Documents", "*.odg")
oFilePicker.CurrentFilter = "Draw Documents"
oFilePicker.Title = "Select a Draw document"
'execution and return check (OK?)
If oFilePicker.execute = _
	com.sun.star.ui.dialogs.ExecutableDialogResults.OK Then
	FileName = oFilePicker.Files(0)
	'Die Quelldatei öffnen
	oQuelldatei = StarDesktop.loadComponentFromURL(FileName, "_default", 0, Array())
End If
oDoc = ThisComponent ' Aktuelles Dokument
oDrawPage = oDoc.DrawPage ' Zugriff auf die Zeichnungsebene
' Durchlaufe alle Objekte auf der Zeichnungsebene
  For i = 0 To oDrawPage.Count - 1
    oShape = oDrawPage.getByIndex(i)
    ' Prüfe, ob es sich um einen Textrahmen handelt
    If oShape.supportsService("com.sun.star.drawing.TextFrame") Then
      ' Textrahmen gefunden, Eigenschaften auslesen
      Print "Textrahmen gefunden:"
      Print "  X-Position: " & oShape.XPos
      Print "  Y-Position: " & oShape.YPos
      Print "  Breite: " & oShape.Width
      Print "  Höhe: " & oShape.Height
      ' Textinhalt auslesen
      oText = oShape.Text
      Print "  Text: " & oText.String
      ' Optional: Formatierung auslesen
      ' ... (Code zur Formatierungsabfrage) ...
    End If
  Next i
End Sub
Werner


