• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Blokkeren weergeven/verbergen afzonderlijke tabbladen

Status
Niet open voor verdere reacties.

andriesluchies

Gebruiker
Lid geworden
30 okt 2009
Berichten
41
Zit wederom met een dillemaajte; het volgende is aan de hand.

Heb een stukje VBA geschreven teneinde het openen van mijn bestand zonder inschakeling van macro's te voorkomen. Het bestand kan dus alleen geopend worden met inschakeling van macro's. Het volgende stukje VBA heb ik opgenomen in 'This Workbook'

Code:
Private Sub Workbook_Open()
Sheets("Introductie").Visible = True
Sheets("Waarschuwing").Visible = xlVeryHidden
Sheets("Afnemers").Visible = True
Sheets("Artikeloverzicht").Visible = True
Sheets("Conversie").Visible = True
Sheets("Opdrachten").Visible = True
Sheets("Totaaloverzicht").Visible = True
Sheets("Statistieken & Rapportage").Visible = True
Sheets("Afrekeningen & Facturen").Visible = True
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Sheets("Waarschuwing").Visible = True
Sheets("Introductie").Visible = xlVeryHidden
Sheets("Afnemers").Visible = xlVeryHidden
Sheets("Artikeloverzicht").Visible = xlVeryHidden
Sheets("Conversie").Visible = xlVeryHidden
Sheets("Opdrachten").Visible = xlVeryHidden
Sheets("Totaaloverzicht").Visible = xlVeryHidden
Sheets("Statistieken & Rapportage").Visible = xlVeryHidden
Sheets("Afrekeningen & Facturen").Visible = xlVeryHidden
End Sub

Stukje VBA werkt op zich prima; echter het volgende is aan de hand.

Het bestand bevat naast een aantal vrij toegankelijke tabbladen ook tabbladen die ik niet voor eenieder zichtbaar wil hebben (staan overigens niet in bovenstaand stukje VBA). Teneinde het zichtbaar maken en verbergen van bladen te blokkeren moet je de werkmapstructuur beveiligen.
Zo komen we bij het probleem; ik kan bovenstaand stukje VBA niet activeren en de werkmapstructuur tegelijk beveiligen.

Iemand suggesties?. Wellicht is het mogelijk individuele tabbladen te blokkeren qua weergeven en verbergen, of iets dergelijks?.
 
Laatst bewerkt door een moderator:
Het is maar een idee, kijk of je er wat mee kunt.
 

Bijlagen

  • TabPassword(Hv).xls
    64 KB · Weergaven: 174
Zet onderstaande in je workbook.

Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Active.Sheets.Protect UserInterfaceOnly:=True
End Sub
 
Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Active.Sheets.Protect UserInterfaceOnly:=True
End Sub

Geprobeerd, maar helaas niet gewenste effect; weet ook niet zeker of ik wel helemaal duidelijk ben geweest in mijn probleemstelling. Het volgende probeer ik te bereiken:

Wanneer gebruiker van mijn bestandje het bestand opent moet hij met zachte hand gedwongen worden macro's in te schakelen; het bestand uitvoeren met macro's uitgeschakeld moet niet mogelijk zijn.

Wanneer gebruiker vervolgens werkblad binnenkomt wil ik een aantal tabbladen verborgen houden; deze gebruik ik intern voor verder verwerking van het formulier.

Met de VBA-code die ik in mijn vraagstelling beschreven heb bereik ik wel dat het bestand niet uitgevoerd kan worden met macro's uitgeschakeld maar is er een conflict met de werkbladbeveiliging (structuur), waardoor ik bepaalde tabbladen niet verborgen kan houden; daar zit hem dus het probleem. Iemand nog suggesties?
 
Laatst bewerkt door een moderator:
Het komt er in feite op neer dat ik gebruikers maar 1 kant wil opsturen en dat is het inschakelen van macro's; maar daarnaast wil ik ook de structuur van het werkblad kunnen beveiligen. (bladen dus onzichtbaar houden voor bepaalde gebruikers)!
 
Het komt er in feite op neer dat ik gebruikers maar 1 kant wil opsturen en dat is het inschakelen van macro's; maar daarnaast wil ik ook de structuur van het werkblad kunnen beveiligen. (bladen dus onzichtbaar houden voor bepaalde gebruikers)!

Kan je niet een voorbeeldje posten zonder gevoelige info ?
 
Is al gebeurd; zie boven test.rar.

Bij macros uitschakelen zou VBA in principe de 2 tabbladen (introductie en blad 3) moeten verbergen en alleen het tabblad waarschuwing moeten weergeven. Bij macros inschakelen geeft hij direct een foutmelding waardoor gewenste effect weg is.
Ik snap het probleem wel:
Ik geef in ThisWorkbook opdracht bepaalde tabbladen weer te geven en via werkbladbeveiliging (structuur) geef ik opdracht bladen weergeven/verbergen te blokkeren en dat werkt niet echt.

Nu zoek ik dus een manier om toch het openen via macros uitschakelen onmogelijk te maken (dus alleen openen met macros ingeschakeld) en daarnaast bladen weergeven/verbergen uitgeschakeld te houden door de werkbladbeveiliging (structuur) ingeschakeld te houden. Lijkt niet samen te kunnen gaan, kijk maar eens naar het bestandje.
 
Jongens, helaas nog geen oplossing gevonden voor mijn probleem: nog iemand suggesties?

Probleem: Werkblad mag niet geopend kunnen worden zonder inschakeling van macros; gebruiker moet dus gedwongen worden macro's in te schakelen anders kan hij niet verder in formulier. Daarnaast moet ik werkbladbeveiliging in kunnen schakelen!; ik wil bepaalde tabbladen niet zichtbaar hebben voor bepaalde gebruikers!.
Hoe los ik bovenstaande op in VBA; is daar uberhaupt een oplossing voor?
 
Daar is geen oplossing voor.
Als jij er echter voor zorgt dat een gebruiker zjin/haar werk veel beter kan doen met jouw applicatie dan zonder, verdampt de behoefte van de gebruiker om zelf wijzigignen in een bestand aan te brengen.
Het betekent in de meeste gevallen wel, dat je de gebruker niet moet laten werken in een werkboek, doch het werkboek slechts als gegevensmagazijn (opslag) moet gebruiken. Met userforms kun je er dan voor zorgen dat de gebruiker van alles kan doen, dat het userform later vertaalt naar het werkboek.

Ik pak dit meestal zo aan:
Het bestand met gegevens staat in een hidden directory.
De gebruiker krijgt dit dan niet te zien met de verkenner, of bestand openen....
In een (sub)menubalk staat een icoon waarmee het userform gestart kan worden.
Sluiten van het userform betekent sluiting van alle bestanden die aan het userform gekoppeld zijn.

De gebruiker krijgt dus nooit een Excelbestand te zien. Het verbergen van werkbladen is dan ook overbodig.
 
Laatst bewerkt:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Active.Sheets.Protect UserInterfaceOnly:=True
End Sub

Blijkt toch precies het gewenste effect te hebben; bedankt Rev!!!
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan