Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VBA tulostuksen esto

Kia [10.07.2003 23:07:16]

#

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.

Kia [11.07.2003 10:34:01]

#

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

thefox [11.07.2003 14:43:52]

#

Tärkeintä osaa taitaa näytellä tuo "mi.ID", kokeile vaikka ihan raa'alla voimalla siihen arvoja :-)

Kia [11.07.2003 16:12:46]

#

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

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta