Taas olisin apua vailla..
Onko VBA koodi mahdollista piilottaa esim. salasanan taakse? Asiakirjan 'täydellisessä' suojauksessa VBA- koodia on mahdollista katsoa ja sieltä saa ilman salasanaa asiakirjan suojauksen pois..
..ja sitten asiaan..
Minulla on asiakirja missä on sheetit nimeltä: "Malli", "Toiminnot"
"Malli" -sheetti sisältää asiakirjamallin ja se saisi olla piilotettu tai sen avaaminen vaatisi salasanan, jotta asiaton ei siihen yrittäisi tehdä muutoksia..
"Toiminnot"- sheetissä on erilaisia nappeja, kuten: "Tulosta", "Uusi", ja jotain muita..
Painettaessa "Uusi" - Ohjelman pitäisi kysyä päivämäärää, ja lisätä päivämäärän niminen sheetti asiakirjaan, käyttäen pohjana piilotettua "Malli"- sheettiä
Painettaessa "Tulosta" - Ohelman pitäisi avata MsgBox, johon tulee alasvetolaatikko, jossa on kaikkien sheettien nimet, lukuunottamatta "Malli" ja "Toiminnot".. Alasvetolaatikosta voisi siis valita minkä asiakirjan haluaa tulostaa..
Eiköhän tässä taas ole vähäksi aikaa..
..ja taas kysyn, että olisiko netissä jotain kattavaa (miel. suomenkielestä) VBA/VB- tutoriaalia, jossa olisi kerrottu kattavasti asiasta..
..ja kirjasuosituksia olisi myös kiva saada..
Onko VBA koodi mahdollista piilottaa esim. salasanan taakse? Asiakirjan 'täydellisessä' suojauksessa VBA- koodia on mahdollista katsoa ja sieltä saa ilman salasanaa asiakirjan suojauksen pois..
..ja sitten asiaan..
Minulla on asiakirja missä on sheetit nimeltä: "Malli", "Toiminnot"
"Malli" -sheetti sisältää asiakirjamallin ja se saisi olla piilotettu tai sen avaaminen vaatisi salasanan, jotta asiaton ei siihen yrittäisi tehdä muutoksia..
"Toiminnot"- sheetissä on erilaisia nappeja, kuten: "Tulosta", "Uusi", ja jotain muita..
Painettaessa "Uusi" - Ohjelman pitäisi kysyä päivämäärää, ja lisätä päivämäärän niminen sheetti asiakirjaan, käyttäen pohjana piilotettua "Malli"- sheettiä
Painettaessa "Tulosta" - Ohelman pitäisi avata MsgBox, johon tulee alasvetolaatikko, jossa on kaikkien sheettien nimet, lukuunottamatta "Malli" ja "Toiminnot".. Alasvetolaatikosta voisi siis valita minkä asiakirjan haluaa tulostaa..
Eiköhän tässä taas ole vähäksi aikaa..
..ja taas kysyn, että olisiko netissä jotain kattavaa (miel. suomenkielestä) VBA/VB- tutoriaalia, jossa olisi kerrottu kattavasti asiasta..
..ja kirjasuosituksia olisi myös kiva saada..
Vastaukset 2
Vanhimmat
Vba koodin piilotus VBA editorissa Tool/VBAProject Properties/Protection sivulla ruksi ruutuun Lock Project for viewing ja salasanat molemmille riveille
ja asiaan...
Vba editorin puolella muuta muotoilujen jälkeen Taulukon Malli ominaisuuksissa visible ominaisuus xlSheetVisible --> xlSHeetVeryHidden
Toiminnot taulukon moduuliin lisää koodit
Dim Päiväys As Variant
Dim Kopioalue As Range
Private Sub CommandButton1_Click()' lisää uusi taulukko nappi
On Error GoTo virhe
uudelleen:
Päiväys = Application.InputBox("Anna lisättävä taulukon nimipvm", "Taulukon lisäys", Format(Date, "dd.mm.yyyy"))
If Päiväys = False Then Exit Sub
Worksheets.Add Count:=1, After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = Päiväys
Set Kopioalue = Sheets(Päiväys).Range("A1")
Sheets("Malli").Visible = xlSheetVisible
Sheets("Malli").Cells.Copy Destination:=Kopioalue
Application.CutCopyMode = False
Sheets("Malli").Visible = xlSheetVeryHidden
Sheets("Toiminnot").Activate
Range("A1").Select
Exit Sub
virhe:
MsgBox "Taulukko nimeltään" & Päiväys & " on jo olemassa.! Anna toinen nimi"
Application.DisplayAlerts = False
Sheets(Sheets.Count).Delete
Application.DisplayAlerts = True
Sheets("Toiminnot").Activate
Range("A1").Select
Exit Sub
End Sub
Private Sub CommandButton2_Click()' tulosta nappi
UserForm1.Show
End Sub
lisää userform ja sinne combobox1 ja commandbutton1 (nimeä itselle sopiviksi)
ja lomakkeeseen koodi
Private Sub CommandButton1_Click()
If ComboBox1 = "" Then Exit Sub
Worksheets(ComboBox1.Text).Activate
Range("A1:H43").Select 'muuta tulostusalue
'poistetaan varoitukset käytöstä
Application.DisplayAlerts = False
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Range("A1").Select 'tulostusvalinnan poisto
Sheets("Toiminnot").Activate
Range("A1").Select
Application.DisplayAlerts = False
End Sub
Private Sub UserForm_Initialize()
For i = 1 To Sheets.Count
If Not Sheets(i).Name = "Malli" And Not Sheets(i).Name = "Toiminnot" Then
ComboBox1.AddItem Sheets(i).Name
End If
Next i
End Sub
..jälleen kerran erittäin paljon..