Ga naar inhoud

Bestand opslaan in PDF dmv VBA


robin89

Aanbevolen berichten

Goede middag allemaal,

 

Voor mijn werk heb ik een excelsheet die ik direct wil kunnen opslaan naar óf een door mij zelf opgegeven locatie (opslaan als) óf direct naar een map met het offertenummer dat een deze sheet staat. 

De eerste optie ben ik nergens op internet tegen gekomen. De 2e mogelijkheid niet precies zoals ik het wens. 

 

Onderstaand in het rood aangegeven welke koppeling ik nog niet voor elkaar krijg. 

 

 

Wie-o-wie kan mij hierbij helpen?

 

Alvast bedankt. 

 

Robin Aalbers

 

---------------------

 

Sub PDF()
 
Dim lLaatsteRegel As Long
 
lLaatsteRegel = Range("A" & Rows.Count).End(xlUp).Row
ActiveSheet.PageSetup.PrintArea = Range("A1:I" & lLaatsteRegel).Address(1, 1)
 
    Pad1 = "M:\1 Offertes 2015\OFFERTENUMMER UIT CEL H4 \ 8 Budget"
    BestandsNaam = "Glasstaat d.d. datum uit cel H3"
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Pad1 & BestandsNaam, Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
 
End Sub
Link naar reactie
Delen op andere sites

Onderstaande macro doet wat je wenst, maar uiteraard wel met de veronderstellingen (voordat je de macro uitvoert):

- dat op schijf M de map "1 Offertes 2015" aanwezig is;

- dat in de map "1 Offertes 2015" een map aanwezig is met de naam "Glasstaat 120"  (als 120 het offertenummer is dat in H4 staat);

- en dat in de map "Glasstaat 120" een map aanwezig is met de naam "8 Budget".

Vreemde namen gebruik je overigens: "lLaatsteRegel", "1 Offertes 2015", "8 Budget".

Sub PDF()
Dim lLaatsteRegel As Long
lLaatsteRegel = Range("A" & Rows.Count).End(xlUp).Row
ActiveSheet.PageSetup.PrintArea = Range("A1:I" & lLaatsteRegel)
pad1 = "M:\1 Offertes 2015\" & Range("H4").Value & "\8 Budget\"
BestandsNaam = "Glasstaat " & Range("H3").Value
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=pad1 & BestandsNaam, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
End Sub
aangepast door alpha
Link naar reactie
Delen op andere sites

In =NU() zit naast de datum ook de tijd en die veroorzaakt bij jou problemen.

Als wat de weergave betreft de datum voldoende is, kun je =NU() wel laten staan, maar dan kun je best die cel opmaken als Datum, type: 14-03-01. Dan loopt er met de opslag niks mis.

Bedenk wel dat met =NU() de datum (en evt. ook de tijd) in H3 elke dag wordt aangepast. 

Als dat ook de bedoeling is, is dat ok natuurlijk.
Link naar reactie
Delen op andere sites

Als ik de opmaak op Datum, type 14-03-01 zet krijg ik de volgende foutmelding: "Systeemfout &H8007007B (-2147024773). De Syntaxis van de bestandsnaam, mapnaam of volumenaam is onjuist". Wellicht staat er iets anders niet goed, of kan ik beter op een andere manier automatisch de datum weergeven op dit blad?

 

Het moet de bedoeling zijn dat bij het openen van het bestand de datum van vandaag komt te staan. 

Link naar reactie
Delen op andere sites

Bij het opslaan als pdf is er een probleem als bij weergave van de tijd een dubbele punt wordt gebruikt tussen de uren en minuten. Maar als je in plaats daarvan een punt gebruikt is de tijd in de filename ook goed leesbaar. Probeer daarom dit als je in H3 nog steeds =nu() hebt staan:

Sub macro1()
Dim lLaatsteRegel As Long, Bestandsnaam As String, mydate As String, mytime As String
lLaatsteRegel = Range("A" & Rows.Count).End(xlUp).Row
ActiveSheet.PageSetup.PrintArea = Range("A1:I" & lLaatsteRegel)
mydate = Format(Range("H3").Value, "dd-mm-yy")
mytime = Format(Range("H3").Value, "hh.mm")
Bestandsnaam = "Glasstaat " & mydate & " " & mytime
pad1 = "M:\1 Offertes 2015\" & Range("H4").Value & "\8 Budget\"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, filename:=pad1 & Bestandsnaam, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
End Sub
In plaats van de datum en tijd uit H3 te nemen, kun je ook de datum en tijd van de computer nemen (Date, resp. Time), maar behalve die twee woorden wijzigt dat niets aan het programmeren.
Ervaar je nog problemen bij de pdf-opslag, dan kun je in H3 de tijd best invoeren als (bv.) 27-01-15, dan kun je in de code voor de bestandsnaam gewoon gebruiken: Bestandsnaam = "Glasstaat " & Range("H3").value .  De regels met mydate= en mytime= kunnen dan vervallen.
 
Link naar reactie
Delen op andere sites

De mappen die vóór uitvoering van de macro aanwezig moeten zijn, beschreef ik in bericht #2 niet helemal correct. Uit jouw eerste bericht blijkt dat moet bestaan:

 

- in M:\ de map "Offertes 2015"

- in "Offertes 2015" de map "120" (als 120 het getal is dat in H4 staat).

- in de map "120" de map "8 Budget"

aangepast door alpha
Link naar reactie
Delen op andere sites

Dat werkt nu super, bedankt!

 

Waar ik nu alleen nog tegenaan loop is dat ik niet weet hoe te programmeren dat dmv dezelfde knop alle lege rijen worden verwijderd. In mijn geval worden nu 32 pagina's opgeslagen, in de gewenste map. 

 

Vanaf rij 21 komen alle glas waarden te staan, loopt dit door tot bijvoorbeeld rij 35, dan moet alles vanaf rij 36 tot 2500 worden verwijderd. Hierdoor krijg ik dan alleen de pagina's geexporteerd naar pdf waar daadwerkelijk informatie op staat.

Link naar reactie
Delen op andere sites

Rijen waarvan het rijnummer kleiner is dan 21 mogen niet worden verwijderd, ook al zijn ze leeg, begrijp ik uit jouw verhaal. Ná rij 21 worden een aantal rijen met glaswaarden ingevuld en daaronder staan kennelijk nog een aantal rijen met gegevens die moeten worden verwijderd. Vraag: hoe ziet zo'n rij met glaswaarden er uit? Of, m.a.w.: welk gegeven/welke kolom is bepalend voor wat de laatste rij met glaswaarden is?

Link naar reactie
Delen op andere sites

In bijgaande glasstaat is er t/m rij 222 een waarde ingevuld, nu moet alles onder rij 223 verwijderd worden. Als ik nu op "printer PDF" klik, dan worden alle pagina's geexporteerd.

Bij het exporteren wil ik dus alleen maar de pagina's waar informatie op staat, pagina 1 en 2 in dit geval. 

Link naar reactie
Delen op andere sites

Gast
Dit topic is nu gesloten voor nieuwe reacties.
×
×
  • Nieuwe aanmaken...

Belangrijke informatie

We hebben cookies geplaatst op je toestel om deze website voor jou beter te kunnen maken. Je kunt de cookie instellingen aanpassen, anders gaan we er van uit dat het goed is om verder te gaan.