Liittyy jälleen näihin käyttöoikeuksien rajoittamiseen. Eli kuinka estän VBA koodilla excelin tietyn työkirjan (application.thisworkbook....) tulostamisen?
Nyt tuo on tehty käyttäen beforeprint -komentoa ja siinäkin tehty väkisin sulkeminen, ennen kuin tulostaminen käynnistyy (koska komennon suorittamisen jälkeen tulostus tulisi joka tapauksessa). Ei siis mikään järkevä, vaan radikaali.
Tällaisen löysin, mutta se disablee vain Uusi -komennon Tiedosto -valikosta. Miten vastaavalla menetelmällä saa tuon Print -komennon disablettua?
Sub ToggleMenuControls() Dim m As CommandBarControl, mi As CommandBarControl Set m = CommandBars.FindControl(ID:=30002) ' File Menu If m Is Nothing Then Exit Sub For Each mi In m.Controls If mi.ID = 18 Then mi.Enabled = False ' toggles the state for the Print menu Next mi Set mi = Nothing Set m = Nothing End Sub
Tärkeintä osaa taitaa näytellä tuo "mi.ID", kokeile vaikka ihan raa'alla voimalla siihen arvoja :-)
... ja siinä kävi huonosti!!
Mutta löysin tällaisen option, joka piti syöttää Worksheet_activeen eikä sitä voinut ainakaan samalla tavalla laittaa Workbook_openiin:
CommandBars("Worksheet Menu Bar").Controls.Item(1).Controls.Item(11).Enabled = False CommandBars("Worksheet Menu Bar").Controls.Item(1).Controls.Item(10).Enabled = False CommandBars("Worksheet Menu Bar").Controls.Item(1).Controls.Item(9).Enabled = False CommandBars("Worksheet Menu Bar").Controls.Item(1).Controls.Item(12).Enabled = False CommandBars("Worksheet Menu Bar").Controls.Item(3).Controls.Item(3).Enabled = False Application.CommandBars("Standard").Controls.Item(5).Enabled = False Application.CommandBars("Standard").Controls.Item(6).Enabled = False
Miten vastaavaa voisi käyttää suoraan Workbook_openissa? Samalla tavalla kirjoitettuna siellä tulee error #91.
Aihe on jo aika vanha, joten et voi enää vastata siihen.