(excel)-tabbladen selecteren

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • Yoni1207
  • Registratie: Januari 2021
  • Laatst online: 08-03-2021
Mijn vraag

ik heb een macro geschreven om een aantal werkbladen te selecteren, in pdf af te drukken en op te slaan op de pc. Dit werkt perfect, behalve wanneer een tabblad verdicht is.
...

Relevante software en hardware die ik gebruik
excel
...

Wat ik al gevonden of geprobeerd heb

dit is mijn macro die werkt, behalve dus als 1 vd werkbladen verdicht is... (ter info: elk tabblad zou kunnen verdicht zijn en het is niet de bedoeling om dit tabblad zichtbaar te maken, dit zou verdicht moeten blijven)..

Sub afdrukken_pdf()
'
' afdrukken_pdf Macro
'

'
Sheets(Array("FOUTMELDINGEN", "Begeleidende brief", "organogram AH+BL (1)")).Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"F:\Demi\Naam.pdf", IgnorePrintAreas:=False, OpenAfterPublish:=True

End Sub
...

Alle reacties


Acties:
  • 0 Henk 'm!

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Met verdicht bedoel je verborgen? Is dat Vlaams?

Anyway, een verborgen tabblad kun je dus inderdaad nooit selecteren. Maar select is ook niet nodig. Dat is in je vorige topic ook al opgemerkt.
Lustucru schreef op vrijdag 22 januari 2021 @ 11:19:
[...]
Maar sowieso is een worksheet.select in een macro meestal onnodig en ongewenst.

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


Acties:
  • 0 Henk 'm!

  • Yoni1207
  • Registratie: Januari 2021
  • Laatst online: 08-03-2021
Verdicht = verborgen inderdaad. :)

maar hoe weet de macro dan welke tabbladen hij moet selecteren?
moet ik best op een andere manier werken?

dat had jij voorgesteld om te gebruiken:
for each ws in activeworkbook.worksheets
If ws.visible then
'doe je ding
endif

moet daar geen 'next' in gebruikt worden? ik krijg daar een foutmelding op..

Acties:
  • 0 Henk 'm!

  • g0tanks
  • Registratie: Oktober 2008
  • Laatst online: 15-05 23:47

g0tanks

Moderator CSA
Yoni1207 schreef op zondag 7 maart 2021 @ 12:33:
maar hoe weet de macro dan welke tabbladen hij moet selecteren?
Wat je nu doet is een sheet selecteren en dan vervolgens refereren naar ActiveSheet. In de code van @Lustucru kan je gewoon direct refereren naar "ws".
Yoni1207 schreef op zondag 7 maart 2021 @ 12:33:
moet daar geen 'next' in gebruikt worden?
Als ik kijk naar de code van @Lustucru dan staat daar toch Next bij?

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


Acties:
  • 0 Henk 'm!

  • Yoni1207
  • Registratie: Januari 2021
  • Laatst online: 08-03-2021
Sub pdf()
'
' pdf Macro
'

'
For Each ws In ActiveWorkbook.Worksheets
If ws.Visible Then
Sheets().Select

End If
Next ws

End Sub

--> dan kom ik hier op uit.. maar hij moet van bv. de 10 tabbladen enkel tabblad 1, 3 en 5 in pdf zetten, en als 3 bijvoorbeeld verborgen is, dan moet hij deze niet meenemen.. ik veronderstel in de formule hierboven, dat hij alle zichtbare tabbladen gaat meenemen.. ik ben dus niet helemaal mee (ben ook nog een beginner en nog niet zo lang bezig met VBA wat je wel gemerkt zult hebben :))

Acties:
  • 0 Henk 'm!

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Zou je ajb je code tussen [code][/code] willen zetten?


In je eerste regel:
code:
1
Sheets(Array("FOUTMELDINGEN", "Begeleidende brief", "organogram AH+BL (1)"))
geef je al een array mee van eventueel af te drukken bladen. Dan is de rest dus simpel: je loopt daar doorheen en selecteert ze alleen als ze zichtbaar zijn:

code:
1
2
3
4
5
6
7
replaceselection=true
For each ws in Sheets(Array("FOUTMELDINGEN", "Begeleidende brief", "organogram AH+BL (1)"))
     If ws.visible then
          ws.select replaceSelection
          replaceSelection=false
     endif
next ws


replaceSelection is een handigheidje. Doordat die bij de eerste sheet 'true' is begin je daar een nieuwe selectie. Meteen daarna wordt hij false en breidt iedere volgende select opdracht de selectie uit.

Een alternatief is eerst een array opbouwen met de juiste sheets, maar dat zijn meer regels. Dit is dus een van de weinige gevallen waarin een select handig kan zijn. ;)

[ Voor 8% gewijzigd door Lustucru op 07-03-2021 15:54 ]

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


Acties:
  • 0 Henk 'm!

  • Yoni1207
  • Registratie: Januari 2021
  • Laatst online: 08-03-2021
Lustucru,

werkt inderdaad perfect. bedankt!

Acties:
  • 0 Henk 'm!

  • g0tanks
  • Registratie: Oktober 2008
  • Laatst online: 15-05 23:47

g0tanks

Moderator CSA
Het is mij trouwens niet helemaal duidelijk of de drie geselecteerde sheets ("FOUTMELDINGEN", "Begeleidende brief", "organogram AH+BL (1)") ook gelijk de enige zijn die zichtbaar zijn. Als dat zo is kan het nog simpeler door de hele workbook te printen. ExportAsFixedFormat print namelijk standaard alleen de zichtbare sheets. Dus dan werkt het volgende ook:
code:
1
2
3
4
    ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "export.pdf", Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, _
        OpenAfterPublish:=True

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

Pagina: 1