• 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.

VBA unprotect -> run app -> protect

Status
Niet open voor verdere reacties.

Sambal87

Gebruiker
Lid geworden
26 mei 2017
Berichten
10
Dag allen,

ik ben bezig met een rapportage die gebruik maakt van een Excel-addin. Deze addin haalt gegevens van onze sql-server. Om te voorkomen dat gebruikers de rapportage vernaggelen wil ik de rapportage beveiligen maar dat ze tegelijk de addin kunnen gebruiken. Echter kan de addin niet gebruikt worden (vernieuwen van gegevens) wanneer de sheets beveiligd zijn. Daarom is het nodig dat er een knop komt die het volgende uitvoert: unprotect -> run addin -> protect.

Ik ben zelf tot de volgende VBACode gekomen, alleen werkt hij niet. Hebben jullie een oplossing? Bij voorbaat dank!

Sub RefreshJet()
ActiveWorkbook.Unprotect
Dim wsheet As Worksheet
For Each wsheet In ActiveWorkbook.Worksheets
wsheet.Unprotect
Next wsheet

'Refresh Jet addin
Application.Run "JetReports.xlam!JetMenu", "Refresh"

For Each wsheet In ActiveWorkbook.Worksheets
wsheet.Protect
Next wsheet

ActiveWorkbook.Protect
End Sub
 
Volgens mij hebben de gebruikers er het meeste last van als ze het bestand verminken.
Beveiligen 'maakt vaak meer kapot dan je lief is'.
Je kunt in de code opnemen dat de gegevens vaak ververst worden.
Als je wil voorkomen dat gebruikers in een werkblad werken moet je dat onzichtbaar maken en gebruik maken van een userform.

Met een doordacht concept is 'beveiligen' overbodig.
 
Hi Snb,

ik geef je helemaal gelijk! helaas is het geval dat ze dan telkens bij mij komen aankloppen dat hun rapportage niet meer werkt. Wat lastig aan deze rapportage is, dat niet alleen gegevens in vaste cellen worden vernieuwd maar hele lijsten opnieuw gedraaid worden. In ons geval kunnen projectlijsten van lengte veranderen. Ik had eerst een VBA-code die prima werkte op de actieve sheet. Alleen wil ik nu alle sheets beveiligd hebben. Dus als daar een oplossing voor is zie ik die graag tegemoet :)

VBA code die werkt op 1 sheet, maar wil alle sheets beveiligen:

Sub RefreshJet()
ActiveSheet.Unprotect
ActiveWorkbook.Unprotect

'Refresh Jet
Application.Run "JetReports.xlam!JetMenu", "Refresh"

ActiveSheet.Protect
ActiveWorkbook.Protect
End Sub
 
Laatst bewerkt:
De code is goed en de aanroep van Jet Refresh ook. Vertel dus eens wat er niet goed gaat in je code van #1.
 
Laatst bewerkt:
Alleen wil ik nu alle sheets beveiligd hebben
Zoiets?
Code:
Sub ProtectAll()
Dim wSheet As Worksheet
Dim Pwd As String
Pwd = "test" ' uw wachtwoord
 For Each wSheet In Worksheets
        wSheet.Protect Password:=Pwd
    Next wSheet
End Sub
 
Hi Edmoor,

ik krijg de volgende foutmelding:

An unexpected error has occurred:

Uitzondering van HRESULT:0x800A03EC
System.Runtime.InteropServices.COMException
bij Microsoft.Office.Interop.Excel._Worksheet.Select(Object Replace)
bij c3.at()
bij a9.a(Boolean disableInteractivity)
bij a9.a(Boolean A_0, Boolean A_1, Boolean A_2, Boolean& A_3)
bij Jet.JetDispatcher.a(Boolean A_0, Boolean A_1, Boolean A_2, Boolean A_3)
bij Jet.JetDispatcher.as()
bij Jet.JetDispatcher.b(Object[] A_0)
bij Jet.JetDispatcher.Dispatch(Object[]& args)

Geen idee of dit jou wat zegt? dank voor het meedenken!
 
Zoiets?
Code:
Sub ProtectAll()
Dim wSheet As Worksheet
Dim Pwd As String
Pwd = "test" ' uw wachtwoord
 For Each wSheet In Worksheets
        wSheet.Protect Password:=Pwd
    Next wSheet
End Sub

Hi gast0660,

dat was me wel gelukt alleen nu in 1 code: UnProtect, run addin, protect
 
@#6:

Dat lijkt op een probleem met 1 of meer tabbladen.
Controleer dus per sheets eens of wSheet.Unprotect goed gaat.

Ook zou het kunnen dat Jet de hoeveelheid gegevens die hij ophaalt uit Navision niet in Excel kwijt kan.
Gebruik je de .xls, xlsm of xlsb extensie voor het werkboek?
 
Laatst bewerkt:
@#6:

Dat lijkt op een probleem met 1 of meer tabbladen.
Controleer dus per sheets eens of wSheet.Unprotect goed gaat.

Ook zou het kunnen dat Jet de hoeveelheid gegevens die hij ophaalt uit Navision niet in Excel kwijt kan.
Gebruik je de .xls, xlsm of xlsb extensie voor het werkboek?

Ik ben nog wat aan het testen en kreeg inderdaad een verwijzing naar een tabblad "Revisie" die ik niet heb aangemaakt of kan zien. Wellicht dat de addIn Jet deze aanmaakt. In dat geval zou ik graag de tabbladen die ik weet willen beveiligen. Zou dat met een VBA kunnen dat ik de tabbladen expliciet benoem die beveiligd moeten worden?
 
Tuurlijk kan dat. Uit de losse pols:
Code:
For Each wsheet In ActiveWorkbook.Worksheets
    Select Case wsheet.Name
        Case "Blad1", "Blad2", "Revisie" [COLOR="#008000"]'Enzovoort[/COLOR]
            wsheet.Protect
    End Select
Next wsheet
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan