Foutmelding beveiligd blad bij macro

Status
Niet open voor verdere reacties.

FS62

Gebruiker
Lid geworden
27 jun 2020
Berichten
21
Ik heb een bestand met meerdere werkbladen. Het werkblad Teamtabel heeft bij activeren de volgende code:
Code:
Private Sub Worksheet_Activate()
ActiveSheet.Unprotect "wachtwoord"
ActiveSheet.ScrollArea = "a1:y161"
Filter1
Sheets("Teamtabel").Protect "wachtwoord"
ActiveSheet.Range("a1").Select
End Sub
Dit werkt probleemloos als ik het werkblad selecteer / deselecteer

Ik heb een menu (Teammenu) waarbij ik via een Listbox kan aangeven welke werkbladen ik wil printen. Een stuk van de code is
Code:
Dim i As Long, c As Long
Dim SheetArray() As String
With Teammenu.LBPrint
For i = 0 To .ListCount - 1
If .Selected(i) Then
ReDim Preserve SheetArray(c)
SheetArray(c) = .List(i)
c = c + 1
End If
Next i
End With
Unload Teammenu
Sheets(SheetArray()).Select
Application.Dialogs(xlDialogPrint).Show

Als ik dan vervolgens print dan krijg ik de foutmelding
Fout 1004 tijdens de uitvoering"
Methode Unprotect van klasse Worksheet is mislukt.

Vervolgens geeft hij aan dat de fout in tabblad Teamtabel zit in regel 2 ActiveSheet.Unprotect "wachtwoord" zit.
Als ik protect / unprotect uit et werkblad uit de VBA-code haal dan werkt het wel maar dat is niet de bedoeling.
Wie kan mij hierbij helpen?
 
Laatst bewerkt:
Code:
Sub M_snb()
   For j = 0 To LBprint.ListCount - 1
     If .Selected(i) Then c00 = c00 & Chr(0) & LBprint.List(j)
    Next
    Sheets(Split(Mid(c00, 2), Chr(0))).PrintOut True
  
    Unload Me
End Sub
 
Bedankt. Ik krijg echter dezelfde foutmelding. De foutmelding wordt in ieder geval getriggerd door de regel Sheets(SheetArray()).Select
Het blijkt ook dat de foutmelding bij het eerste werkblad dat hij tegenkomt getriggerd wordt. Ik heb de volgorde veranderd en een ander werkblad (met ook in de worksheet_activate() de unprotect en protect opgenomen) vooraan gezet. Vervolgens kwam de foutmelding bij dit andere blad.

Bijzonder is ook dat de foutmelding niet komt als ik de printpreview gebruik (zie code hieronder), deze werkt probleemloos. Hierin zit dus niet de code Sheets(SheetArray()).select maar direct Sheets(SheetArray()).PrintPreview
Ik wel echter een aparte knop die voor de geselecteerde werkbladen Application.Dialogs(xlDialogPrint).Show aanroept.

Code:
Dim i As Long, c As Long
Dim SheetArray() As String
With Teammenu.LBPrint
For i = 0 To .ListCount - 1
If .Selected(i) Then
ReDim Preserve SheetArray(c)
SheetArray(c) = .List(i)
c = c + 1
End If
Next i
End With
Unload Teammenu
Sheets(SheetArray()).PrintPreview
 
Heb je de code in #2 gebrobeerd? Waarom ga je dan door met jouw eigen code. Plaats het bestand met de volledige code.
 
Ik heb de code in #2 geprobeerd en het werkt! Bedankt.
Hij print nu direct de keuzes uit. Ik wil graag de gebruikers 3 keuzes geven om te printen.
1. Knop met Print Preview
2. Knop met keuze printer en dan printer (via Application.Dialogs(xlDialogPrint).Show
3. Knop met direct printen als .pdf via onderstaande code
Hoe kan ik jouw oplossing uitbreiden met deze 3 keuzes? Alvast bedankt!

Code:
 Dim fileSaveName As Variant
     
     fileSaveName = Application.GetSaveAsFilename( _
        FileFilter:="PDF Files (*.pdf), *.pdf")
    
    If fileSaveName <> False Then
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
            fileSaveName, Quality:=xlQualityStandard, IncludeDocProperties:=True, _
            IgnorePrintAreas:=False, OpenAfterPublish:=True
    End If
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan