Beginner in vba zoekt hulp
Wat ik nu heb werkt zoals ik wil voor de eerste pagina van Blad15. Het resultaat is een pdf.
Wat ik graag wil is dat deze code wordt aangepast naar iets dat het volgende doet:
Bekijk op 35 plekken in Blad15 of er iets staat (een formule zorgt er voor dat er een naam staat of dat het leeg is (""))
Elke keer dat er een naam staat moet de bijbehorende range worden opgeslagen als aparte pdf. De naam van de pdf wordt uit de bijbehorende range gehaald.
De ranges en cellen schuiven steeds 39 velden naar beneden.
Eerste pagina: Staat er tekst in cel Blad15.Range("A1")? Dan:
PDFnaam = Trim(Blad15.Range("A2")) & ", " & Trim(Blad15.Range("A1"))
Blad15.Range("A1:K39").ExportAsFixedFormat 0, Padnaam & PDFnaam
Tweede pagina (39 rijen naar beneden): Staat er tekst in cel Blad15.Range("A40")? Dan:
PDFnaam = Trim(Blad15.Range("A41")) & ", " & Trim(Blad15.Range("A40"))
Blad15.Range("A40:K78").ExportAsFixedFormat 0, Padnaam & PDFnaam
Derde pagina ook weer 39 rijen naar beneden: Staat er tekst in cel Blad15.Range("A79")? Dan:
Enz enz
En dat voor 35 pagina's, t/m cel A1327 met range A1327:K1365.
1327 = 1 + (34 x 39)
Merk op:
*Er mag niets van de maximaal 35 pdf'jes worden opgeslagen als een van de maximaal 35 pdf'jes al bestaat in de map waar wordt opgeslagen.
*Wanneer er een leeg veld staat op een van de A1, A40, A79 (steeds 39 rijen naar beneden) t/m A1327 mag de bijbehorende range niet worden opgeslagen. De macro moet wél verdergaan naar de volgende pagina.
*De 'opslaan' handeling wordt met 1 'druk op de knop' handeling gedaan door de gebruiker, er worden dan in een keer mximaal 35 pdf'jes gecreëerd.
*Het echte tabblad heet 'UrenStrookjeA4', maar het lukte me niet om dat in de code te verwerken. Het werkte wel als ik 'Blad15' gebruik.
*Mijn bijlage bestaat uit gekopieerde waardes en mijn macro. Het echte bestand creëert de waardes d.m.v. een formule. In mijn bijlage zijn velden dus soms 'gewoon' leeg, in het echte bestand zijn ze leeg dmv een formule ("").
Bekijk bijlage Rooster voorbeeld voor forum.xlsm
Wat ik nu heb werkt zoals ik wil voor de eerste pagina van Blad15. Het resultaat is een pdf.
Wat ik graag wil is dat deze code wordt aangepast naar iets dat het volgende doet:
Bekijk op 35 plekken in Blad15 of er iets staat (een formule zorgt er voor dat er een naam staat of dat het leeg is (""))
Elke keer dat er een naam staat moet de bijbehorende range worden opgeslagen als aparte pdf. De naam van de pdf wordt uit de bijbehorende range gehaald.
De ranges en cellen schuiven steeds 39 velden naar beneden.
Eerste pagina: Staat er tekst in cel Blad15.Range("A1")? Dan:
PDFnaam = Trim(Blad15.Range("A2")) & ", " & Trim(Blad15.Range("A1"))
Blad15.Range("A1:K39").ExportAsFixedFormat 0, Padnaam & PDFnaam
Tweede pagina (39 rijen naar beneden): Staat er tekst in cel Blad15.Range("A40")? Dan:
PDFnaam = Trim(Blad15.Range("A41")) & ", " & Trim(Blad15.Range("A40"))
Blad15.Range("A40:K78").ExportAsFixedFormat 0, Padnaam & PDFnaam
Derde pagina ook weer 39 rijen naar beneden: Staat er tekst in cel Blad15.Range("A79")? Dan:
Enz enz
En dat voor 35 pagina's, t/m cel A1327 met range A1327:K1365.
1327 = 1 + (34 x 39)
Merk op:
*Er mag niets van de maximaal 35 pdf'jes worden opgeslagen als een van de maximaal 35 pdf'jes al bestaat in de map waar wordt opgeslagen.
*Wanneer er een leeg veld staat op een van de A1, A40, A79 (steeds 39 rijen naar beneden) t/m A1327 mag de bijbehorende range niet worden opgeslagen. De macro moet wél verdergaan naar de volgende pagina.
*De 'opslaan' handeling wordt met 1 'druk op de knop' handeling gedaan door de gebruiker, er worden dan in een keer mximaal 35 pdf'jes gecreëerd.
*Het echte tabblad heet 'UrenStrookjeA4', maar het lukte me niet om dat in de code te verwerken. Het werkte wel als ik 'Blad15' gebruik.
*Mijn bijlage bestaat uit gekopieerde waardes en mijn macro. Het echte bestand creëert de waardes d.m.v. een formule. In mijn bijlage zijn velden dus soms 'gewoon' leeg, in het echte bestand zijn ze leeg dmv een formule ("").
Bekijk bijlage Rooster voorbeeld voor forum.xlsm
Code:
Sub OpslaanPDF()
Padnaam = "c:\Users\Dijkstra\Documents\lonen\Urenstrookjes\"
PDFnaam = Trim(Blad15.Range("A2")) & ", " & Trim(Blad15.Range("A1"))
If Dir(Padnaam & PDFnaam & "*.pdf") <> "" Then
MsgBox "Er bestaan al urenstrookje(s) van deze periode.", vbCritical, "Waarschuwing"
Exit Sub
Else
Blad15.Range("A1:K39").ExportAsFixedFormat 0, Padnaam & PDFnaam
End If
End Sub
Laatst bewerkt: