ExporttoPDF vanuit Calc of SendMailDocAsPDF
Geplaatst: wo jun 17, 2020 8:50 pm
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:
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