variabele werkbladen obv infoblad naar pdf

Status
Niet open voor verdere reacties.

PVS81

Gebruiker
Lid geworden
5 feb 2017
Berichten
17
Hallo,
Heb lang zitten sukkelen met VBA...

Ik had juist zelfde vraag als link hieronder. Helaas is dit opgelost zonder toevoeging van oplossing...

http://www.helpmij.nl/forum/showthread.php/665981-Een-selectie-werkbladen-opslaan-als-pdf



Eerste werkblad noemt infoblad, daarna volgen de werkbladen A, B, C, D
Infoblad:
kolom A Kolom B
A JA
B NEEN
C NEEN
D JA

Op basis van deze info zouden enkel werkbladen A en D bewaard moeten worden als pdf. Tot nu toe slaag ik daar hélaas niet in...

Kan er iemand mij helpen? Mijn eeuwige dank!
 
Bijv.

Het blauwe gedeelte aanpassen naar waar jij ze wilt opslaan.
Code:
Sub pdf_maken()
Dim cl As Range
Application.ScreenUpdating = False
 For Each cl In Sheets("infoblad").Range("B1:B4")
  If LCase(cl) = "ja" Then Sheets(cl.Offset(, -1).Value).ExportAsFixedFormat 0, "[COLOR=#0000ff]c:\users\PVS81\documents\map1\[/COLOR]" & cl.Offset(, -1) & ".pdf"
 Next cl
End Sub
 
Alvast dank maar dit zorgt ervoor dat de werksheets apart bewaard worden ipv geselecteerde werkbladen in 1 pdf? Hoe pas ik het aan? Alvast dank!
 
Onder andere.
Code:
Sub pdf_maken()
Dim cl As Range
Application.DisplayAlerts = False
ThisWorkbook.Sheets.Copy
With ActiveWorkbook
 .Sheets("infoblad").Delete
        For Each cl In ThisWorkbook.Sheets("infoblad").Range("B1:B4")
         If LCase(cl) <> "ja" Then .Sheets(cl.Offset(, -1).Value).Delete
        Next cl
   .ExportAsFixedFormat 0, [COLOR=#3E3E3E]"[/COLOR][COLOR=#0000ff]c:\users\PVS81\documents\map1[/COLOR]\test_hsv.pdf"
   .Close 0
  End With
 Application.DisplayAlerts = True
End Sub
 
Heum,

je code klopt niet? werkblad "infoblad" wordt verwijderd (zie ook Delete) alsook de werkbladen met "ja"? :eek:
 
Niet getest dus!
Wel de klok horen luiden maar niet weten waar de klepel hangt?
 
Huh? Geen idee waarom je zo reageert... Excuseer dat ik u iets vraag! Post dan gewoon niets... Kon ik het zelf oplossen, dan deed ik het wel...
 
Andere klepel

Code:
Sub VenA()
ar = Sheet1.Cells(1).CurrentRegion
  For j = 1 To UBound(ar)
    If LCase(ar(j, 2)) = "ja" Then c00 = c00 & "|" & ar(j, 1)
  Next j
  Sheets(Split(Mid(c00, 2), "|")).Copy
  With ActiveWorkbook
    .ExportAsFixedFormat 0, "E:\temp\ikdoemaarwat.pdf"
    .Close 0
  End With
End Sub

Voorbeeld bestandjes willen ook nog wel eens helpen.
 
Laatst bewerkt:
Ik post iets zodat je het uit kan uitproberen.
Als jij iets leest van 'delete' wil dat nog niet zeggen dat de code niet klopt.

Uitleg:
De code maakt een kopie van je werkboek.
In dat nieuwe werkboek ben je de infoblad niet nodig. dus delete.
Ook ben je de bladen niet nodig als een cel niet ja is (If LCase(cl) <> "ja" then), ook deleten.

Zo hou je een werkboek over die na te zijn geëxporteerd naar een pdf bestand weer wordt gesloten maar niet opgeslagen.

 
Dag HSV,

Nu snap ik uiteraard wat je bedoelde. Ik had het wel uitgetest (toegegeven, wel eerst getwijfeld). Echter had ik op dat moment aantal excelfiles open waardoor ik niet echt terugkeerde naar oorspronkelijke excelfile en ik eigenlijk live een excelfile close zag ging gaan. Daarop had ik close 0 verwijderd. Daarna zag ik dat sommige werkbladen plots verdwenen. Dan was ik het spoor bijster :shocked:

Nu je het zo uitlegt en ik ENKEL 1 excelfile open heb staan heb ik het beter kunnen zien. Mooi, andersom nagedacht.

Echter, op infoblad staan er aantal verwijzingen (bvb naam, adres, ...) die via gewone formules overgenomen worden op verschillende werkbladen. Doordat infoblad verwijderd wordt, vallen de naam, adres etc ook weg. (#verw)

Dit kan ik anders ook oplossen door voorafgaand de waarde 'vast' te zetten in copy.workbook...

Uiteindelijk is het mij gelukt, waarvoor dank!!! (en excuses, ik interpreteerde uw post verkeerd!)
 
Hallo PVS81,

Mooi dat het je al is gelukt.
Je kan ook eerst alle formules omzetten in waarden, en daarna het blad 'infoblad' verwijderen zoals met onderstaande code gedaan wordt.

Code:
Sub pdf_maken()
Dim cl As Range
Application.DisplayAlerts = False
ThisWorkbook.Sheets.Copy
With ActiveWorkbook
   For Each cl In ThisWorkbook.Sheets("infoblad").Range("B1:B4")
      If LCase(cl) <> "ja" Then
           .Sheets(cl.Offset(, -1).Value).Delete
         Else
           .Sheets(cl.Offset(, -1).Value).UsedRange = .Sheets(cl.Offset(, -1).Value).UsedRange.Value
        End If
   Next cl
    .Sheets("infoblad").Delete
    .ExportAsFixedFormat 0, "c:\users\hsv\desktop\test_hsv.pdf"
    .Close 0
  End With
 Application.DisplayAlerts = True
End Sub
Indien overbodig, dan maar in de prullenbak.


Ps: Ik denk dat ik je post ook verkeerd heb geïnterpreteerd.
 
Laatst bewerkt:
Een hele dikke merci en ik sluit vraag af.

PS: als ik u ooit irl eens zie, dan trakteer ik u op een pintje :thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan