BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!

❤️ DANKE >><< DANKE ❤️

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 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
Beiträge: 1642
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 nutzen:


Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten