Mijn code omzetten in loop(?)

Status
Niet open voor verdere reacties.

Torben

Gebruiker
Lid geworden
27 apr 2017
Berichten
46
Beginner in vba zoekt hulp :rolleyes:
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:
test deze eens:

Code:
Sub OpslaanPDF()

Padnaam = "c:\Users\Dijkstra\Documents\lonen\Urenstrookjes\"

With Sheets("UrenStrookjeA4")
    For i = 1 To 1327 Step 39
  

        PDFnaam = Trim(.Range("A" & i + 1)) & ", " & Trim(.Range("A" & i))

        If Dir(Padnaam & PDFnaam & "*.pdf") <> "" Then
                MsgBox "Er bestaan al urenstrookje(s) van deze periode.", vbCritical, "Waarschuwing"
                Exit Sub
        End If
 
    Next i

    For i = 1 To 1327 Step 39

        PDFnaam = Trim(.Range("A" & i + 1)) & ", " & Trim(.Range("A" & i))
       
        If .Range("A" & i).Value <> "" Then
            .Range("A" & i).Resize(39, 11).ExportAsFixedFormat 0, Padnaam & PDFnaam
        End If
           
    
    Next i

End With
End Sub
 
Laatst bewerkt:
Hartstikke bedankt!
Alle ranges mét naam worden opgeslagen (velden A1, A40 etc), perfect!

Hij werkt op 1 ding na:
Er wordt 1x een pdf gemaakt van een range zónder tekst in het veld A1 of A40 of A79 of etc etc
*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
 
@ pasan

TS wil :

Code:
*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.
 
@ Torben, dat komt omdat er een spatie in de zogenaamd lege vakken staat.
 
Bah, ik deed zo mijn best mijn vraag volledig en duidelijk te formuleren.
Sorry voor mijn onoplettendheid, ik ga er uit komen!

Hartstikke bedankt allemaal!
 
Jawel hoor, ik ben er uit.
Met 'er uit komen' bedoelde ik dat ik de formules in het excelblad aan ga passen zodat er 'leeg' ontstaat en geen spatie.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan