• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Middels VBA, Excel tabblad exporteren naar PDF en emailen

Status
Niet open voor verdere reacties.

Excellerend

Gebruiker
Lid geworden
8 nov 2011
Berichten
68
Beste Forumleden,

Ik, als VBA leek, probeer in Excel (2010) middels VBA een tabblad te exporteren naar PDF en direct aansluitend te mailen met Outlook. (2010)
Deze vraag is al een aantal maal gevraagd en beantwoord, namelijk met de code van Ron de Bruin. (http://www.rondebruin.nl/win/winfiles/PDFExamples.txt)
Die werkt inderdaad, ook bij mij, probleemloos.

Enkel nu wil ik iets wat niet is opgenomen in zijn code, en ook na een middagje knutselen lukt het me niet.

Ik gebruik:
- Sub RDB_Selection_Range_To_PDF_And_Create_Mail()
- Function RDB_Mail_PDF_Outlook
- Function RDB_Create_PDF

Want ik wil een selectie van één tabblad mailen naar een contactpersoon waarbij bestandsnaam van de PDF afkomstig is uit een aantal cellen in het betreffende tabblad.
Daarbij moet het tijdelijke bestand in dezelfde directory komen als het bronbestand.

De betreffende code 1 op 1 van Ron:
Code:
Sub RDB_Selection_Range_To_PDF_And_Create_Mail()
    Dim FileName As String

    If ActiveWindow.SelectedSheets.Count > 1 Then
        MsgBox "There is more then one sheet selected," & vbNewLine & _
               "ungroup the sheets and try the macro again"
    Else
        'Call the function with the correct arguments


        'For a fixed range use this line
        FileName = RDB_Create_PDF(Range("A10:I15"), "", True, False)

        'For the selection use this line
        'FileName = RDB_Create_PDF(Selection, "", True, False)

        [B]'For a fixed file name and overwrite it each time you run the macro use
        'RDB_Create_PDF(Selection, "C:\Users\Ron\Test\YourPdfFile.pdf", True, False)[/B]

        If FileName <> "" Then
            RDB_Mail_PDF_Outlook FileName, "ron@debruin.nl", "This is the subject", _
                                 "See the attached PDF file with the last figures" _
                               & vbNewLine & vbNewLine & "Regards Ron de bruin", False
        Else
            MsgBox "Not possible to create the PDF, possible reasons:" & vbNewLine & _
                   "Microsoft Add-in is not installed" & vbNewLine & _
                   "You Canceled the GetSaveAsFilename dialog" & vbNewLine & _
                   "The path to Save the file in arg 2 is not correct" & vbNewLine & _
                   "You didn't want to overwrite the existing PDF if it exist"
        End If
    End If
End Sub

Nu moet ik dus het vetgedrukte deel van de code gebruiken. (Nog wel even "FileName = " voor zetten anders gaat het niet goed.)

Bijvoorbeeld:
Code:
FileName = RDB_Create_PDF(Range("B3:S69"), "", True, False)

Dit werkt, want bij If FileName = "" Then gaat de code vragen handmatig een bestandsnaam op te geven.
Nu moet dus de "" worden vervangen door de een pad (ThisWorkbook.Path) en de bestandsnaam komende uit cel C4 (= TEST) & cel E9 (= datum)

Beoogde resultaat; een PDF bestand in dezelfde map als de excelbron met de bestandsnaam: Rapport TEST 18-04-2013

Enkel codes als onderstaand werken niet..
Code:
ThisWorkbook.Path & "Rapport " & Range("C4") & " " & Range("E9")
ThisWorkbook.Path "Rapport & ActiveSheet.Cells(4, 3) & ActiveSheet.Cells(5, 9)"

Wie heeft hiervoor de oplossing?

Alvast bedankt.

Groet,
Peter
 
Laatst bewerkt:
Willem,

Toen ik gisterenavond op mijn 'mobile device' snel mijn mail bekeek had ik wat vraagtekens bij jouw reactie.
Maar nu ik de link zie en de daarbij behorende site valt het kwartje.

Het wordt nu een geloofskwestie, maar ik heb echt totaal niets met dat bedrijfje / die persoon(en) te maken, wist ook niet van het bestaan af.

Ik ken en volg dit forum al een tijdje en heb al diverse oplossingen gebruikt, allen betrekking op Excel en/of VBA.
Ik ben lid sinds november 2011 omdat ik toen een Excel (VBA) vraag had waarop ik geen antwoord kon vinden.
Aangezien ik Helpmij 99% van de gevallen raadpleeg m.b.t. tot Excel ben ik ook mijn gebruikersnaam in die hoek gaan zoeken nadat bleek dat mijn standaard-lijstje gebruikersnamen al bezet was.
Blijkbaar hebben de mensen achter de site dezelfde gedachten gehad.

Meer kan ik er niet van maken :), ik hoop dat jullie, net als alle andere keren, ook een oplossing weten te bedenken op dit vraagstuk.

Groet,
Peter
 
Voordeel van de twijfel ;)
Code:
ThisWorkbook.Path & "[COLOR="#FF0000"][B]\[/B][/COLOR]Rapport " & Range("C4") & " " & Range("E9")

Maar om het een beetje in te korten, ongetest...
Code:
Sub Spaarie()
    If ActiveWindow.SelectedSheets > 1 Then
        MsgBox "U mag maar 1 tabblad selecteren.", vbInformation, "Attentie"
    Else
        ActiveSheet.ExportAsFixedFormat xlTypePDF, ThisWorkbook.Path & "\Rapport " & Range("C4") & " " & Range("E9") & ".pdf"
        With CreateObject("Outlook.Application").CreateItem(0)
            .To = "" 'ontvanger
            .Subject = "" 'onderwerp
            .Attachments.Add ThisWorkbook.Path & "\Rapport " & Range("C4") & " " & Range("E9") & ".pdf"
            .Display
        End With
    End If
End Sub
 
Laatst bewerkt:
Spaarie,

Bedankt voor het vertrouwen!:D

Wel grappig/goed om te zien dat sommige gebruikers alhier een bepaalde hoeveelheid research doen alvorens inhoudelijk naar het probleem te kijken.

Jouw eerste oplossing werkt (bij mij) niet, hij creëert wel een mail maar zonder bijlagen. Had voor het stellen van de vraag ook al een hoop geprobeerd met een \ " " of andere leestekens maar zonder resultaat.

Jouw 2de code werkt wel, zij het enigszins aangepast bij de regel attachment.
Code:
.Attachments.Add ThisWorkbook.Path & "\Rapport " & Range("C4") & " " & Range("E9")

De vooraf vastgestelde naam van de pdf kwam niet overeen met het te zoeken bestand om in te voegen als bijlagen.

Maar verder werkt het volledig, waarvoor dank.

Eind van de dag zal ik de vraag op opgelost zetten, maar ik ben ook wel benieuwd hoe ik de code van Ron de Bruin werkend kan krijgen.. :)

Groet,
Peter
 
Misschien te simpel gedacht maar heb je wel de (') voor de regel weggehaald die je wilt laten werken.

Niels
 
Jazeker Niels, dat is gedaan.

Middels F8 alle stappen langs gelopen, verschillende dingen aangepast, maar de ene keer krijg ik wel een PDF bestand in de juiste map (naast het bronbestand) maar vervolgens genereert hij geen mail, de andere keer maakt hij geen bestand aan of plaatst deze in 'Mijn Documenten' en genereert vervolgens een mail zonder bijlagen.

Groet,
Peter
 
Maar je gebruikt niet de dik gedrukte regel.
Bij die regel staat: gebruik dit bij vaste namen , jouw naam komt uit een cel dus is niet vast.
dus snap niet waarom je iets met het dik gedrukte wil.

plaats anders even je macro die je nu hebt aangepast, samen met de funties

Niels
 
Laatst bewerkt:
Niels,

De reden waarom ik de 3de optie gebruik (For a fixed file name and overwrite it each time you run the macro use) is dat ik een vaste Range heb, eerste deel van de code, en een vaste bestandsnaam in de zin van, de bestandsnaam komt altijd uit de twee eerder genoemde cellen.

Als ik de eerste optie gebruik (For a fixed range use this line) dan kan ik inderdaad een vaste Range kiezen maar dan wordt er altijd handmatig om een bestandsnaam gevraagd. (zie onderstaande code.)

Code:
If FileName = "" Then
            'Open the GetSaveAsFilename dialog to enter a file name for the pdf
            FileFormatstr = "PDF Files (*.pdf), *.pdf"
            Fname = Application.GetSaveAsFilename("", filefilter:=FileFormatstr, _
                                                  Title:="Create PDF")

Hierdoor ontstaan er een wildgroei in bestandsnamen, en dat wil ik voorkomen door vaste informatie uit de sheet te gebruiken als input voor de bestandsnaam.

Bij het posten van de code ging er nog een klein lampje branden.
Ik mis in mijn code de extensie (PDF). Door deze nog toe te voegen werkt de code van Ron de Bruin wel.

Gebruikte regel:
Code:
FileName = RDB_Create_PDF(Range("B3:S69"), ThisWorkbook.Path & "\Rapport " & Range("C4") & " " & Range("E9") & ".pdf", True, False)

Bedankt voor jullie input en info, vraag bij deze opgelost.

Groet,
Peter
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan