Pagina 1 van 1

ExporttoPDF vanuit Calc of SendMailDocAsPDF

BerichtGeplaatst: wo jun 17, 2020 8:50 pm
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   UitklappenInklappen
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   UitklappenInklappen
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