❤️ Helfen Sie noch heute, unser LibreOffice Forum zu erhalten! ❤️
Unterstützen Sie das LibreOffice-Forum und helfen Sie uns, unser Ziel für 2025 zu erreichen!

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱


❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

[gelöst] Textfelder einer mit Makro ausgewählter Datei auslesen wie?

Alles zur Programmierung im LibreOffice.
Antworten
wega
Beiträge: 125
Registriert: Mi 16. Jul 2014, 19:15

[gelöst] Textfelder einer mit Makro ausgewählter Datei auslesen wie?

Beitrag von wega » Fr 15. Aug 2025, 15:28

Hallo zusammen,

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
mit freundlichem Gruß
Werner
Zuletzt geändert von wega am Sa 16. Aug 2025, 03:22, insgesamt 1-mal geändert.

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2569
Registriert: Fr 10. Dez 2010, 10:01

Re: Textfelder einer mit Makro ausgewählter Datei auslesen wie?

Beitrag von karolus » Fr 15. Aug 2025, 19:15

ja nee …

was wird da wohl für ein Dingsbums im Symbol »oQuelldatei« drinstecken :roll:
LO25.2.x.y debian 13(trixie) auf Raspberry5 8GB (64bit)
LO25.8.x.y flatpak debian 13(trixie) auf Raspberry5 8GB (64bit)

wega
Beiträge: 125
Registriert: Mi 16. Jul 2014, 19:15

Re: Textfelder einer mit Makro ausgewählter Datei auslesen wie?

Beitrag von wega » Fr 15. Aug 2025, 22:06

Hallo Karolus,

tja, das ist ja mein Problem.
oQuelldatei ist geöffnet und ich kann alle "Form(Textrahmen 'Textinhalt')" sehen.
Jedoch ein Zugriff mit "oDrawPage = oDoc.DrawPage" wird mit einer Fehlermeldung quittiert.

Und genau da hört mein Wissen um "wie geht es sinnvoll weiter" auf.
Wie komme ich an die DrawPage der oQuelldatei?

Gruß Werner

wega
Beiträge: 125
Registriert: Mi 16. Jul 2014, 19:15

Re: Textfelder einer mit Makro ausgewählter Datei auslesen wie?

Beitrag von wega » Sa 16. Aug 2025, 03:21

Hallo zusammen,

nach weiterer Suche im Internet bin ich zu folgender Lösung gekommen.

Code: Alles auswählen

'*****************************************
'* Textrahmen auslesen
'*
'*****************************************
'*
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

' Zugriff auf die aktuelle Drawpage
 oDrawPage = oQuelldatei.DrawPages.getByIndex(0)

' 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.TextShape") Then
      ' Textinhalt auslesen
      oText = oShape.Text
      Print "  Text: " & oText.String
    End If
  Next i
  print "nichts gefunden"
  
  ' Dokument schließen
    oQuelldatei.close
End Sub
Damit ist mein Problem vorerst gelöst.

Mit freundlichem Gruß
Werner

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2569
Registriert: Fr 10. Dez 2010, 10:01

Re: Textfelder einer mit Makro ausgewählter Datei auslesen wie?

Beitrag von karolus » Sa 16. Aug 2025, 11:30

wega hat geschrieben:
Sa 16. Aug 2025, 03:21
nach weiterer Suche im Internet bin ich zu folgender Lösung gekommen.
Wahnsinn… du hast selbstständig herausgefunden, was ich dir bereits vorher mitgeteilt hatte :lol: :lol:
LO25.2.x.y debian 13(trixie) auf Raspberry5 8GB (64bit)
LO25.8.x.y flatpak debian 13(trixie) auf Raspberry5 8GB (64bit)

wega
Beiträge: 125
Registriert: Mi 16. Jul 2014, 19:15

Re: [gelöst] Textfelder einer mit Makro ausgewählter Datei auslesen wie?

Beitrag von wega » Sa 16. Aug 2025, 16:45

Hallo Karolus,

vielen Dank für Dein engagement,
ein paar verständliche Worte helfen einem Fragenden doch immer weiter.
Danke für Deine ausführliche Anregung.

Mit freundlichem Gruß
Werner


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten