🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ 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) Nosuchelementexcaption in Writer (Makro)

Alles zur Programmierung im LibreOffice.
Antworten
Strunz
Beiträge: 99
Registriert: Fr 9. Sep 2011, 19:51

(gelöst) Nosuchelementexcaption in Writer (Makro)

Beitrag von Strunz » Mo 30. Nov 2020, 17:45

Halllo,

ich habe ein Makro in Writer geschrieben:

Code: Alles auswählen

REM  *****  BASIC  *****
Option Explicit


Sub Main

Dim odoc As Object, formulare As Object
Dim eingabetext As String
Dim formnames() As String
Dim i as Integer, svar as Integer
Dim drawpage as Object, forms as Object, formular as Object
Dim eingabeFeld as Object

odoc = ThisComponent

If NOT odoc.supportsService("com.sun.star.text.TextDocument") Then
MsgBox "Das aktuelle Dokument ist kein Writer-Textdokument", 48, "Fehler"
End If

REM Zuerst erfolgt die Eingabe-Bearbeitung
drawpage = odoc.getDrawPage()
forms = drawpage.getForms()
formular = forms.getByName("Formular")
eingabeFeld = formular.getByName("eingabeText")
eingabetext = eingabeFeld.Text

 if eingabetext = "" Then
    Beep
    eingabeFeld.BackGroundColor = RGB(255,0,0)
    MsgBox ( "Das rot hinterlegte Feld ist ein Pflichtfeld, dass heisst es muss was eingegeben werden!", 0, "Fehlermeldung")
 end if

 	formnames() = formular.getElementNames() 	
 	for i = 0 to ubound(formnames())
 		if left(formnames(i),7) = "ausgabe" then
  			formular.getByName(formnames(i)).Text = eingabetext
  		end if
  	next i

End Sub

sub loeschen

Dim formular as object

formular = ThisComponent.getDrawPage().getForms().getByName("Formular")
formular.getByName("eingabeText").Text = ""
formular.getByName("ausgabeText(0)").Text = ""
formular.getByName("ausgabeText(1)").Text = ""
formular.getByName("ausgabeText(2)").Text = ""

end sub

Sub initialisierung

Dim eingabeFeld as Object
Dim formular as Object
Dim eingabeText As Object

eingabeFeld = ThisComponent.getDrawPage().getForms().getByName("Formular").getByName("eingabeText")
eingabeText = eingabeFeld

eingabeFeld.BackGroundColor = RGB(255,255,255)

formular = ThisComponent.getDrawPage().getForms().getByName("Formular")

formular.getByName("ausgabeText(0)").Text = ""
formular.getByName("ausgabeText(1)").Text = ""
formular.getByName("ausgabeText(2)").Text = ""

End Sub

Sub druckenpdf

rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
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 = "URL"
args1(0).Value = "file:///Users/strunz/Documents/Unbenannt%201.pdf"
args1(1).Name = "FilterName"
args1(1).Value = "writer_pdf_Export"
args1(2).Name = "FilterData"
args1(2).Value = Array(Array("UseLosslessCompression",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Quality",0,90,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ReduceImageResolution",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("MaxImageResolution",0,300,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("UseTaggedPDF",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("SelectPdfVersion",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ExportNotes",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ViewPDFAfterExport",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ExportBookmarks",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("OpenBookmarkLevels",0,-1,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("UseTransitionEffects",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("IsSkipEmptyPages",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("IsAddStream",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("FormsType",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ExportFormFields",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("AllowDuplicateFieldNames",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("HideViewerToolbar",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("HideViewerMenubar",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("HideViewerWindowControls",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ResizeWindowToInitialPage",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("CenterWindow",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("OpenInFullScreenMode",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("DisplayPDFDocumentTitle",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("InitialView",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Magnification",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Zoom",0,100,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("PageLayout",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("FirstPageOnLeft",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("InitialPage",0,1,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Printing",0,2,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Changes",0,4,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("EnableCopyingOfContent",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("EnableTextAccessForAccessibilityTools",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ExportLinksRelativeFsys",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("PDFViewSelection",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ConvertOOoTargetToPDFTarget",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ExportBookmarksToPDFDestination",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("SignPDF",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("_OkButtonString",0,"",com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Watermark",0,"",com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("EncryptFile",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("PreparedPasswords",0,,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("RestrictPermissions",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("PreparedPermissionPassword",0,Array(),com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("SignatureLocation",0,"",com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("SignatureReason",0,"",com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("SignatureContactInfo",0,"",com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("SignaturePassword",0,"",com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("SignatureCertificate",0,,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("",0,,com.sun.star.beans.PropertyState.DIRECT_VALUE))
args1(3).Name = "SelectionOnly"
args1(3).Value = false

dispatcher.executeDispatch(document, ".uno:ExportTo", "", 0, args1())

End Sub 

Sub URL

Dim stFeld As String
Dim oShell As Object

stFeld = "https://de.libreoffice.org/get-help/documentation/"
oShell = createUnoService("com.sun.star.system.SystemShellExecute")
oShell.execute(stFeld,,0)

End Sub

Sub Mail
	DIM oDoc AS OBJECT
	DIM oDrawpage AS OBJECT
	DIM oForm AS OBJECT
	DIM oFeld1 AS OBJECT
	DIM oFeld2 AS OBJECT
	DIM oFeld3 AS OBJECT
	DIM oFeld4 AS OBJECT
	DIM oShell AS OBJECT
	DIM stFeld1 AS STRING
	DIM stFeld2 AS STRING
	DIM stFeld3 AS STRING
	DIM stFeld4 AS String
	
	oDoc=thisComponent
	oDrawpage=oDoc.Drawpage
	REM Lage des Feldes in dem entsprechenden Formular aufsuchen
	oForm = oDoc.drawpage.forms.getByName("Formular")
	oFeld1=oForm.getByName("E_Mail_Adresse")
	oFeld2=oForm.getByName("E_Mail_Betreff")
	oFeld3=oForm.getByName("E_Mail_inhalt")
	stFeld1=oFeld1.Text
	stFeld1 = oFeld1.Text
	IF stFeld1 = "" THEN
		msgbox "Keine Mailadresse vorhanden." & CHR(13) & "Das Mailprogramm wird nicht aufgerufen" , 48, "Mail senden"
		EXIT SUB
	END IF
	REM Die Konvertierung zu URL ist notwendig, da sonst Sonderzeichen und Zeilenumbrüche nicht übernommen werden
	REM Die überflüssigen Einträge file:/// werden dabei wieder herausgeschnitten
	stFeld2=Mid(ConvertToUrl(oFeld2.Text),9)
	stFeld3=Mid(ConvertToUrl(oFeld3.Text),9)
	REM Start des Files mit der entsprechenden URL-Verbindung
	oShell = createUnoService("com.sun.star.system.SystemShellExecute")
	oShell.execute("mailto:"+stFeld1+"?subject="+stFeld2+"&body="+stFeld3,,0)
END SUB

Allerdings kommt bei folgenden Code:

oFeld1=oForm.getByName("E_Mail_Adresse")

Denn oben genannte Fehlermeldung!

Was muss ich tun?

MFg
Strunz
Zuletzt geändert von Strunz am Mo 30. Nov 2020, 20:29, insgesamt 1-mal geändert.

mikele
* LO-Experte *
Beiträge: 1930
Registriert: Mo 1. Aug 2011, 20:51

Re: Nosuchelementexcaption in Writer (Makro)

Beitrag von mikele » Mo 30. Nov 2020, 18:47

Hallo,

Was muss ich tun?
... einen existierenden Namen angeben.
Gruß,
mikele

Strunz
Beiträge: 99
Registriert: Fr 9. Sep 2011, 19:51

Re: Nosuchelementexcaption in Writer (Makro)

Beitrag von Strunz » Mo 30. Nov 2020, 20:28

Hallo,
ja, das war`s!

Mfg
Strunz


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