PDF maken

Status
Niet open voor verdere reacties.

Plotinus

Gebruiker
Lid geworden
25 mrt 2007
Berichten
658
Ik heb een beveiligde Excel-map met o.a. een knop om de gebruiker een print te laten maken en zodanig dat het allemaal past op één A4. Dat werkt perfect, maar nu wil men ook de mogelijkheid hebben een PDF te maken. Met de makrorecorder, die ik meestal gebruik om grofweg te bekijken hoe ik iets in elkaar moet steken, kom ik er niet uit.
Wat ik dus wil is een extra knop op de sheet die bij activering alleen aan de gebruiker vraagt waar de pdf moet worden opgeslagen en hoe die moet heten dit vervolgens uitvoert en vervolgens netjes in het programma terugkeert.
Ik heb ook overwogen om die vragen achterwege te laten (risico ontsporen bij bijvoorbeeld opgeven dezelfde naam) en de PDF op te slaan met een naam bestaande uit een vast gedeelte en vervolgens jaar/maand/dag/tijdstip erachter en vervolgens locatie en naam van het bestand middels een mededeling terug te koppelen. Minder gebruiksvriendelijk, maar geen risico op eenzelfde naam.

Iemand een idee hoe ik een van beide mogelijkheden moet oplossen.
 
Welke versie van Office gebruik je en in welk Office programma wil je dat doen?

Dit is een heel simpele vorm om te bereiken wat je wilt, vanaf Office 2007:
Code:
sPDF = Application.GetSaveAsFilename(InitialFileName:=InitialName, _
       fileFilter:="PDF Files (*.pdf), *.pdf")

ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:=sPDF
 
Laatst bewerkt:
dank je Edmoor, dit werkt. Maar toch is het niet helemaal zoals ik het bedoel: ik kan, zover ik kan nagaan, niet instellen dat het in PDF op te slaan document, net als bij printen, op één pagina wordt 'gefit' (zodanig wordt aangepast dat het nooit meer dan één pagina beslaat.) Ik hoop dat ik het mis heb.
 
Als je de code al hebt dat alles op 1 A4-tje past om te printen kan je van dat bereik toch ook een pdf maken die dan 1 blad beslaat.
 
Ik heb het opgelost door de code iets aan te passen:
Code:
Private Sub btnAfdruk_PDF_Click()
    Unload Me
    sPDF = Application.GetSaveAsFilename(InitialFileName:=InitialName, fileFilter:="PDF Files (*.pdf), *.pdf")
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=sPDF, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
End Sub
 
Dit volstaat.
Code:
Private Sub btnAfdruk_PDF_Click()
    Unload Me
    ActiveSheet.ExportAsFixedFormat 0, Application.GetSaveAsFilename(InitialName, "PDF Files (*.pdf), *.pdf")
End Sub
 
klopt Rudi, dank je! Wat nog wel een klein gebrekje is dat dat een bestaand bestand zonder waarschuwing gewoon overschreven wordt..
 
Daarom is overbodige gebruikersinterventie ook niet handig. Bepaal programmatisch de naam van het bestand.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan