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

PDF knop toevoegen aan excel om document als pdf op te slaan

Status
Niet open voor verdere reacties.

petervv19

Gebruiker
Lid geworden
3 apr 2008
Berichten
53
Ik kon het niet echt vinden wat ik zocht en weet ook niet of het mogelijk is.

Ik heb een excel document met een aantal resultaten in verschillende grafieken erin. Deze staan ook op verschillende bladen. Nu zou ik graag een knop toevoegen waarop je kan drukken en dat hij dan van bepaalde bladen, welke ik van te voren heb aangegeven, een pdf document maakt.

Is dat mogelijk?
 
Bv. met.
Code:
Sub hsv()
   Sheets(Array(1, 2, 4)).Copy
   ActiveWorkbook.ExportAsFixedFormat 0, "c:\users\petervv19\documents\testje.pdf"
   ActiveWorkbook.Close 0
End Sub
 
En hoe of waar voeg ik deze code toe?

Daarnaast zie ik een het pad staan waar hij opgeslagen gaat worden. Het bestand zal alleen op verschillende computers gebruikt gaan worden (ook Windows en Mac), is er ook een mogelijkheid dat je op de knop klikt en zelf kan kiezen waar hij opgeslagen wordt?
 
Druk Alt+F11.
Invoegen module.
Code plakken in het grote witte vlak.
Aanroepen met Alt+F8 of aan een knop hangen.
Helaas kan ik niet testen dat het op een Mac werkt.
Code:
Sub hsv()
Dim vFilename
vFilename = Application.GetSaveAsFilename("c:\users\hsv\documents\", "PDF Files (*.pdf), *.pdf", , "Geef bestandsnaam")
   If vFilename <> False Then
   Sheets(Array(1, 2, 4)).Copy
   With ActiveWorkbook
     .SaveAs "c:\temp\testje.xlsx"
     .ExportAsFixedFormat 0, vFilename
     .Close 0
   End With
 Kill "c:\temp\testje.xlsx"
End If
End Sub

De code werkt als volgt.
Het opent een scherm waarin je de pdf kan opslaan.
Annuleren kan ook.
Van de bladen wordt een Excel-copy gemaakt en wordt opgeslagen in "C:\Temp"
Van de Excel-copy wordt een Pdf gemaakt en opgeslagen in het door jou gekozen pad cq. map.
De Eccel-copy wordt weer verwijderd uit "c:\Temp"
 
Je kan met Application.PathSeparator controleren of dit een "\" is. Zoniet dan heb je met een Mac te maken, anders is het Windows.
 
Laatst bewerkt:
Bedankt ed, maar ik heb geen idee of het zo werkt.
Code:
Sub hsv()
Dim vFilename, tmp As String
If Application.PathSeparator = "\" Then
    vFilename = Application.GetSaveAsFilename("c:\users\hsv\documents\", "PDF Files (*.pdf), *.pdf", , "Geef bestandsnaam")
    tmp = "c:\temp\testje.xlsx"
 Else
   vFilename = Application.GetSaveAsFilename("c:/users/hsv/documents/", "PDF Files (*.pdf), *.pdf", , "Geef bestandsnaam")
   tmp = "c:/temp/testje.xlsx"
End If
   
   If vFilename <> False Then
   Sheets(Array(1, 2, 4)).Copy
   With ActiveWorkbook
       .SaveAs tmp
     .ExportAsFixedFormat 0, vFilename
     .Close 0
   End With
 Kill tmp
End If
End Sub
 
De standaard path separator voor een Mac is een dubbele punt, maar is ook instelbaar De Mac pad notatie zou zoiets moeten zijn:
Code:
MacHD:Users:hsv:Documents:

Maar met Application.PathSeparator kan TS dat zelf wel uitvinden lijkt me.
 
Laatst bewerkt:
Het wil helaas niet helemaal lukken. Dit ook omdat het document niet altijd op 1 computer gebruikt wordt.
Is het mogelijk makkelijk om een knop te maken dat hij alleen een pdf document creëert en deze opent. Dan kan je zelf kiezen waar je hem eventueel opslaat?
 
Dan probeer het zo maar eens.
Code:
.ExportAsFixedFormat 0, "petervv19", , , , , , 1
 
Plaats ik die in deze code? En waar precies?

Sub hsv()
Dim vFilename, tmp As String
If Application.PathSeparator = "" Then
vFilename = Application.GetSaveAsFilename("c:\users\hsv\documents", "PDF Files (*.pdf), *.pdf", , "Geef bestandsnaam")
tmp = "c:\temp\testje.xlsx"
Else
vFilename = Application.GetSaveAsFilename("c:/users/hsv/documents/", "PDF Files (*.pdf), *.pdf", , "Geef bestandsnaam")
tmp = "c:/temp/testje.xlsx"
End If

If vFilename <> False Then
Sheets(Array(1, 2, 4)).Copy
With ActiveWorkbook
.SaveAs tmp
.ExportAsFixedFormat 0, vFilename
.Close 0
End With
Kill tmp
End If
End Sub
 
Wel even de pathseparator aanpassen voor je Mac.
Code:
Sub hsv()
 Sheets(Array(1, 2, 4)).Copy
   With ActiveWorkbook
       .SaveAs "c:/temp/testje.xlsx"
       .ExportAsFixedFormat 0,"petervv19",,,,,,1
       .Close 0
   End With
 Kill "c:/temp/testje.xlsx"
End Sub
 
Waarschijnlijk heb je maar drie tabbladen.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan