ExporttoPDF vanuit Calc of SendMailDocAsPDF

Forumregels
In dit forum geen vragen stellen, het is uitsluitend bedoeld voor het plaatsten en toelichten van code. Stel vragen in het forum Macro's.
RPG
Berichten: 4667
Lid geworden op: wo apr 15, 2009 1:01 am
Locatie: Apeldoorn, Nederland

ExporttoPDF vanuit Calc of SendMailDocAsPDF

Bericht door RPG »

Ik hoop dat dit voorbeeld eenvoudiger is voor de meeste gebruikers. Ik leer zelf ook door het eenvoudiger te schrijven voor anderen. Let wel op dat bijna alles hoofdletter gevoelig is. Op plaatsen waar delen van de bestandsnaam staan of het email adres mag ook een formule staan die naar het betreffende wijst of resultaat geeft.

Het verzenden van een bestand als email werkt alleen maar er een werkzame email client aanwezig is. Een werkzame email cliënt is zoiets als Thunderbird of Outlook. Voor outlook moet het niet de webversie zijn. Veel thuisgebruikers hebben geen werkzame email client en dan is het misschien ook niet verstandig om het te veranderen want het kan het systeem van email compleet verstoren.

In het werkblad staan in principe de gegevens voor het uitvoeren van de dispatch opdracht. Dit is voor zover ik weet niet te gebruiken voor zoiets als mailmerge maar wel voor
menu --> Bestand -->exporteren
en
menu --> Bestand -->Verzenden

Het kan naar mijn idee zo eenvoudig wanneer gebruik gemaakt wordt van een gedefinieerd printbereik. Ook het gebruik van namen voor het gebruik in combinatie van een selectie knop kan het vereenvoudigen.

MediaDescriptor
Wanneer gebruik gemaakt wordt van de dispatcher moet er vaak gebruik gemaakt worden van meegegeven waarden in de vorm van een array. Het is nooit zo duidelijk wat gebruikt kan worden. Hier een verklaring van de door mij gebruikte:

Code: Selecteer alles

SuggestedSaveAsName  :Voorstel van een te gebruiken naam
SuggestedSaveAsDir  :Voorstel van de map waar het opgeslagen wordt.
URL       :: Naam van het bestand. Is niet gebruikt.

Recipient: de Ontvanger van de email

Code: Selecteer alles

REM  *****  BASIC  *****
option explicit ' Variabelen moeten gedefinieerd worden

' In deze module wordt er vanuit gegaan dat de waarden op het getoonde werkblad staan.
' 
' De geselecteerde cellen beginnen met de URL opdracht
' Daarna volgen de parameters.
' Een parameter bestaat uit een "Naam" en gegevens.
' Alles is hoofdletter gevoelig

Sub WerkOpGeSelecteerdeCellen

	dim oDoc
	dim oActiveSheet
	dim oCurrentSelection
	dim oDataArray
	oDoc = thiscomponent
	oActiveSheet = oDoc.getCurrentController.getActiveSheet
	oCurrentSelection = oDoc.getCurrentSelection
	oDataArray = oCurrentSelection.getDataArray


	Dim mDispatch() As New com.sun.star.beans.PropertyValue
	dim x
	if ubound(oDataArray) then
		for x = 1 to ubound(oDataArray)
			call AppendPropertyhier( mDispatch(),oDataArray(x)(0), oDataArray(x)(1) )
		next x

	dim oDispatch
'	dim sURL

	oDispatch =	createUnoService("com.sun.star.frame.DispatchHelper")
	oDispatch.executeDispatch(oDoc.CurrentController.Frame,oDataArray(0)(0),"", 0, mDispatch())
	
end if

	' Door gebruikt te maken van activesheet kunnen waarden gemakkelijk van een werkblad gehaald worden.
	' Er zijn twee methodes die werken
	' a) Het cel adres van het getoonde werkblad
	' b) Een benoemde cel op het getoonde werkblad 

'	voor = voor & mDispatch(1).value
'	msgbox voor
End Sub


Sub AppendPropertyhier( oProps(), sName As String, ByVal oValue )
    Dim oProperty As New com.sun.star.beans.PropertyValue
    Dim iLB As Integer, iUB As Integer
    oProperty.Name = sName
    oProperty.Value = oValue
    iLB = LBound( oProps() )
    iUB = UBound( oProps() ) + 1
    ReDim Preserve oProps( iLB To iUB )
    oProps(iUB) = oProperty
End Sub
Bijlagen
Select_Dispatch03.ods
ExporttoPDF of verzend het als PDF per mail
(16.03 KiB) 275 keer gedownload
LibreOffice 7.4.3.2 op openSUSE Leap 15.4