Excel macro naar PDF

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • RamonVersteeg
  • Registratie: Januari 2016
  • Laatst online: 25-03-2023
Hallo allen,

Ik ben bezig met een macro, maar ik kom hier niet helemaal uit.

Ik wil graag een macro hebben die het betreffende bestand exporteerd als PDF. Daarbij wil ik dat het bestand genoemd wordt naar de datum die in cel A3 wordt weergegeven. Dit bestand moet opgeslagen worden in een mapje Y:\Documents\YYYY\MM. Deze gegevens kunnen ook uit de betreffende cel A3 gehaald worden.

Daarnaast wil ik de mogelijkheid inbouwen dat er geen handmatige wijziging gedaan kan worden aan de filename en exportlocatie.

Wie kan mij helpen?

Alvast dank.

Alle reacties


Acties:
  • 0 Henk 'm!

  • g0tanks
  • Registratie: Oktober 2008
  • Laatst online: 01:36

g0tanks

Moderator CSA
RamonVersteeg schreef op maandag 11 januari 2021 @ 12:50:
Ik ben bezig met een macro, maar ik kom hier niet helemaal uit.
Dit suggereert dat je al een stukje code hebt. Kan je dat delen met waar je vastloopt? We verwachten namelijk wel een stukje eigen inzet en zijn er niet om kant-en-klare code voor je te schrijven. :)

Ultrawide gaming setup: AMD Ryzen 7 2700X | NVIDIA GeForce RTX 2080 | Dell Alienware AW3418DW


Acties:
  • 0 Henk 'm!

  • RamonVersteeg
  • Registratie: Januari 2016
  • Laatst online: 25-03-2023
Ik ben tot zover gekomen:

Sub PrintPDF()
Range("A1:Q50").Select
Range("Q50").Activate
ChDir "Y:\Documents\YYYY\MM"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"YYMMDD.pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
True
End Sub

Volgens mij voldoet de code zo, alleen zal hij hem nu opslaan onder de map YYYY\MM als YYMMDD, maar ik zou graag zien dat hij wordt opgeslagen onder 2021\01 als 210111 als ik het vandaag zou uitvoeren.

Acties:
  • +1 Henk 'm!

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Ik begrijp de vraag dan eerlijk gezegd niet, je kunt de directorynaam in de code toch aanpassen? Vervang YYYY door het jaar van de celinhoud in A3 en MM door de maand ervan.

Strings voeg je samen via &, bijv. als A = "foo" dan resulteert A & "bar" in "foo bar".

offtopic:
Ieuw, via de recorder opgenomen code onveranderd gebruiken gaat uiteindelijk fout.

Neem op, bekijk de code, snap dat je weet wat er gebeurt, schrijf zelf code. 1op1 overnemen gaat haast per definitie fout, zo ook in dit geval als je het net even anders wilt. Zoals wanneer er nog geen directory bestaat.
Sloop ook .select() en .activate er uit als dat niet heel bewust nodig is.

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


Acties:
  • 0 Henk 'm!

  • Bergenfietsen
  • Registratie: Februari 2008
  • Laatst online: 11:42
Kan het ook zo?
Ik zelf gebruik het in combinatie met factuur en gekoppeld aan de datum
Het factuur gedeelte ertussenuit gesloopt

sub printPDF()
Dim Bestandsnaam As String
Bestandsnaam = " " & Date & ".pdf"

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Bestandsnaam, Quality:=xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas:=False, From:=1, To:=1, OpenAfterPublish:=True
End Sub

Acties:
  • 0 Henk 'm!

  • m-vw
  • Registratie: Mei 2013
  • Laatst online: 14:06

m-vw

Dus?

Onderstaande code gebruikt moment van exporteren (Now) als basis van jaar, maand en dag.
Je kan Now vervangen voor Activesheet.Range("A3").Value

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sub PrintPDF()
Range("A1:Q50").Select
Range("Q50").Activate

jaar = Year(Now)
 'Month(Now) geeft 1, op deze manier krijg je 01.
maand = Application.WorksheetFunction.Text(Now, "mm")
bestandsnaam = Application.WorksheetFunction.Text(Now, "yyyymmdd") & ".pdf"

ChDir "Y:\Documents\" & jaar & "\" & maand

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=bestandsnaam, _ 
Quality:=xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas:=False, _
From:=1, To:=1, OpenAfterPublish:=True
End Sub

Acties:
  • 0 Henk 'm!

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

De huidige tijd/datum lijkt me hier niet per se de juiste. Maar ik stel voor dat we de topicstarter zelf sowieso de def. code laten maken :)

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


Acties:
  • +1 Henk 'm!

  • m-vw
  • Registratie: Mei 2013
  • Laatst online: 14:06

m-vw

Dus?

@F_J_K Ach, hij had al meer op papier staan dan menig ander die zijn/haar (huiswerk)probleem hier wel eens op de diverse fora gooit.
Pagina: 1