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.

ExporttoPDF vanuit Calc of SendMailDocAsPDF

Berichtdoor RPG » 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:

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
Bijlagen
Select_Dispatch03.ods
ExporttoPDF of verzend het als PDF per mail
(16.03 KiB) 12 keer gedownload
LibreOffice 6.4.4.2.0 op openSUSE Leap 15.1
RPG
 
Berichten: 4177
Geregistreerd: wo apr 15, 2009 1:01 am
Woonplaats: Apeldoorn, Nederland

Keer terug naar Macro voorbeelden

Wie is er online

Gebruikers op dit forum: Geen geregistreerde gebruikers. en 1 gast

cron