Printen verschillende werkbladen naar PDF (op basis van waarde)

Status
Niet open voor verdere reacties.

TommyV2209

Gebruiker
Lid geworden
1 apr 2020
Berichten
22
Ik heb een excel-worksheet met 6 verschillende tabbladen, waarvan er 5 getoond worden aan de gebruiker en 1 verborgen is (ws_Data).

Ik zou op basis van een waarde in de verschillende tabbladen willen beslissen of een tabblad moet afgedrukt worden naar PDF of niet.
Hiervoor heb ik een data-tabblad gemaakt waarin beslist wordt of het tabblad afgedrukt mag worden of niet (waarde 1 = afdrukken, waarde 0 = niet afdrukken).

Kan iemand me op weg helpen hoe ik de verschillende tabbladen (die ik wil) automatisch in 1 PDF kan krijgen via VBA?

Ik heb een zeer basic document in bijlage gezet, met de verschillende tabbladen en het verborgen data-tabblad met daarin de waarden.

Alvast bedankt voor de hulp!
 

Bijlagen

  • printtoPDF.xlsb
    18,3 KB · Weergaven: 23
Zelf de code aanpassen om welke cel het om draait.

Code:
Sub hsv()
Dim sh As Worksheet
For Each sh In Sheets
  If sh.Name <> "Voorblad" Then
     sh.Visible = sh.Range("a1") = 1
  End If
 Next sh
ThisWorkbook.ExportAsFixedFormat 0, "c:\temp\" & Format(Now, "dd/mmmm/yyyy h_mm") & ".pdf"
  For Each sh In Sheets
    sh.Visible = -1
  Next sh
End Sub
 
Met de gegevens uit de tab 'Data'. Zorg el wel voor dat er bij minimaal 1 tab een 1 ingevuld is.

Code:
Sub VenA()
  ar = Sheets("Data").Cells(1, 6).CurrentRegion
  For j = 1 To UBound(ar)
    Sheets(ar(j, 1)).Visible = -ar(j, 2)
  Next j
  ThisWorkbook.ExportAsFixedFormat 0, "E:\temp\" & Format(Now, "dd/mmmm/yyyy h_mm") & ".pdf"
  For Each sh In Sheets
    sh.Visible = sh.Name <> "Data"
  Next sh
End Sub
 
Laatst bewerkt:
Dan bouw je daar een zekerheid voor in.
Code:
  if not iserror(application.match(1,application.index(ar,0,2),0)) then

Of.
Code:
with Sheets("Data").Cells(1, 6).CurrentRegion
  ar = .value
  .columns(2).name = "b"
  if [countif(b,1)] then
 
Laatst bewerkt:
Allebei, dank je wel voor de hulp.
Echter, ik krijg bij allebei de pogingen een foutmelding:
Bij hsv krijg ik foutmelding 1004, en verbergt Excel alle worksheets, behalve Voorblad. Alle 5 worksheets zouden zichtbaar moeten blijven. Enkel het tabblad "Data" is verborgen en zou dat ook moeten blijven.

Bij VenA zijn de variabelen niet gedefinieerd.
Ik vermoed dat ik de volgende variabelen moet definiëren :
Dim ar as Worksheet, j as Long

Maar ook dan nog krijg ik een foutmelding :-(

Ik heb een paar screenshots erbij gevoegd.

Hoe kan ik gewoon ervoor zorgen dat de pdf geopend wordt als men op de knop drukt of dat ik de printerkeuze krijg?

Alvast bedankt voor de hulp!2020-09-13 (1).png2020-09-13 (2).png2020-09-13.png
 
Je kan ook Option Explicit weghalen.

Code:
Dim j as long, ar as variant

Of
Code:
Dim j as long, ar
 
En verander "c:\Temp" of "E:\Temp" naar je eigen schijf en map.
 
dank je voor de snelle reactie!

ik krijg nu dezelfde foutmelding als bij hsv...foutmelding 1004
is er een mogelijkheid om de pdf enkel te openen en voorlopig niet op te slaan?
Dan kan de gebruiker nog altijd beslissen of hij wil opslaan of niet.
 
Vergeet mijn code.

Ik had niet eens opgemerkt dat je een verborgen blad hebt (dacht het een verkeerd bestand was).
Met de suggesties die ik later plaatste op de code van de andere helper moet je maar kijken wat je ermee doet.

Let op: De pdf zal altijd worden opgeslagen in de map waar je Excel-bestand zich ook bevindt in onderstaande coderegel.
Hierbij opent de pdf zich.
Code:
ThisWorkbook.ExportAsFixedFormat 0, Format(Now, "dd/mmmm/yyyy h_mm") & ".pdf", , , , , , true
 
dank je allebei!
De code werkt op het voorbeeldbestand, maar werkt niet op het effectieve bestand (dat veel groter is en meer kolommen bevat in werkblad "Data").
Ik krijg de melding dat de typen niet overeenkomen (fout 13), terwijl de structuur van het bestand (zelfde namen werkbladen, zelfde verborgen tabblad "Data") is.

De foutmelding zit in de regel
Code:
For j = 1 To UBound(ar)
 
Zie afbeelding voor de structuur in VBA en in het tabblad "Data". Er is 1 extra tabblad (ws_CTRL), maar dat hoeft niet betrokken te worden bij de code.
2020-09-13 (4).png2020-09-13 (3).png
 
Code:
ar = Sheets("Data").Cells(1, [COLOR="#FF0000"]6[/COLOR]).CurrentRegion

Kolom F lijkt mij iets anders dan kolom DR.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan