• 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.

Excel als PDF opslaan. Bestandsnaam o.b.v. cellen

Status
Niet open voor verdere reacties.

raoulduivestein

Gebruiker
Lid geworden
7 aug 2012
Berichten
115
Goedenavond,

Met onderstaande code, maar ik van een gedeelte van mijn excel sheet een PDF.
Nu wil ik dat de bestandsnaam word gemaakt o.b.v. 2 cellen (C16 en C17) in het blad "Voorbeeld".
Zou iemand mij op weg willen helpen?

Groetjes,
Raoul

Code:
Sub PDF()

    Sheets("Hide").Select
    Range("A1:M97").Select
    Range("M97").Activate
    Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "C:\Users\windows\Desktop\Export\bestandsnaam.pdf", _
        Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
        :=False, OpenAfterPublish:=True
    Sheets("Voorbeeld").Select

End Sub
 
Zoiets:
Code:
Sub PDF()
    Dim Bestandsnaam As String
    
    Sheets("Hide").Select
    Range("A1:M97").Select
    Range("M97").Activate
    
    With Sheets("Voorbeeld")
        Bestandsnaam = "C:\Users\windows\Desktop\Export\" & _
            .Range("C16") & _
            .Range("C17") & _
            ".pdf"
    End With
    
    Selection.ExportAsFixedFormat Type:=xlTypePDF, _
        Filename:=Bestandsnaam, _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, _
        OpenAfterPublish:=True
    
    Sheets("Voorbeeld").Select

End Sub
 
Laatst bewerkt:
Bedankt voor het meedenken edmoor.

- In de sheet Hide staat de gegevens die ik in het PDF document wil hebben.

Ik heb jouw code geprobeerd maar krijg foutmelding 1004.
"Het document is niet opgeslagen. Mogelijk is het document nog geopend of is er een fout opgetreden bij het opslaan van het document."

Weet jij waar dit aan kan liggen?

Heb ik direct nog een 2e vraag, is het ook mogelijk de PDF te versturen als bijlage van een e-mail. Het e-mailadres staat in de sheet Voorbeeld (C18) :)
 
De code is goed maar ik kan natuurlijk niet weten welk sheet je actief wilt hebben. Ook vertel je niet op welke regel je die fout 1004 krijgt. Over het mailen vanuit Excel kan je hier alles lezen:
http://www.rondebruin.nl/win/section1.htm
 
Bedankt voor je de link :)

Wat bedoel je met " ik kan natuurlijk niet weten welk sheet je actief wilt hebben."?
Ik krijg de foutmelding in:

Code:
Selection.ExportAsFixedFormat Type:=xlTypePDF, _
        Filename:=Bestandsnaam, _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, _
        OpenAfterPublish:=True
 
Dan bestaat dit pad niet:
"C:\Users\windows\Desktop\Export\"

En die heb je in je voorbeeld aangegeven.
 
Het pad bestaat.. :)

Ik krijg nu overigens een ander melding:


1004 als ik test vanuit VBA
Door de toepassing of door object gedefinieerde fout :(

400 Als ik test vanuit Excel
 
Laatst bewerkt:
Je hebt dus een gebruiker die windows heet?
Plaats je document eens, dat praat makkelijk.
 
Dat is het document zonder macro's.
 
Je weet dat je met F8 de code kan doorlopen om te zien wat er gebeurt?
Hij gaat nu fout op Range("A1:M97").Select
Wijzig die drie regels eens in dit:
Code:
    With Sheets("Hide")
        .Range("A1:M97").Select
        .Range("M97").Activate
    End With
 
Nee dat wist ik nog niet, dankjewel :)

Het werkt nu ik ga nu aan de slag met de link die je me gestuurd hebt :)

Nogmaals bedankt!
 
Nee dat wist ik nog niet, dankjewel :)

Echter blijf ik nog steeds de zelfde foutmelding krijgen bij:

Code:
.Range("M97").Activate
 
Je hebt deze regels:
Code:
    Sheets("Hide").Select
    Range("A1:M97").Select
    Range("M97").Activate
Vervangen door dit:
Code:
    With Sheets("Hide")
        .Range("A1:M97").Select
        .Range("M97").Activate
    End With
 
Ja dat heb ik inderdaad gedaan, als ik de macro uitvoer vanuit "Hide" werkt het wel.
Maar vanuit "Voorbeeld" lukt het niet.

Heb nu :
Code:
 Sheets("Hide").Select
toegevoegd aan het begin van het scirpt en dat lijkt het perfect te werken :)
 
Laatst bewerkt:
Waarom niet gewoon?
Code:
Sub PDF()
    Dim Bestandsnaam As String
    
        With Sheets("Voorbeeld")
        Bestandsnaam = "C:\Users\windows\Desktop\Export\" & _
            .Range("C16") & _
            .Range("C17") & _
            ".pdf"
    End With
    
    Sheets("Hide").Range("A1:M97").ExportAsFixedFormat 0, Bestandsnaam, Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, _
        OpenAfterPublish:=True
    
   

End Sub

Verkort ziet het er dan zo uit.
Code:
Sub PDF()
    Dim Bestandsnaam As String
    
        With Sheets("Voorbeeld")
        Bestandsnaam = "C:\Users\windows\Desktop\Export\" & _
            .Range("C16") & _
            .Range("C17") & _
            ".pdf"
    End With
 Sheets("Hide").Range("A1:M97").ExportAsFixedFormat 0, Bestandsnaam, 0, 1, 0, , , 1
End Sub
 
Da's beter. Ik denk dat de .Select van de Range last heeft van de samengevoegde cellen.
 
In eerste instantie dacht ik dat het blad "Hide" verborgen was ;), maar dan krijg je een andere foutmelding.
Daarop getest en gelijk maar een beetje aangepast.
 
Bedankt Harry en Edmoor :)

Het is mij nu ook gelukt om de PFD als bijlage toe te voegen.
Het lukt mij alleen niet om het e-mailadres van de ontvanger uit cel C19 te halen.
Iemand die me op weg kan helpen? :)

Code:
On Error Resume Next
    With OutMail
        .to = sh.Range("C19").Value
        .CC = ""
        .BCC = ""
        .Subject = "Test"
        .Body = "Hi there"
        .Attachments.Add Bestandsnaam
        .Display   'or use .Send
    End With
    On Error GoTo 0

    Set OutMail = Nothing
    Set OutApp = Nothing
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan