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

combo boxen beveiligen met wachtwoord

Status
Niet open voor verdere reacties.

davylenders123

Gebruiker
Lid geworden
20 jun 2010
Berichten
902
Heb een excel file die gemaild wordt via een knop in het werkblad.

Het blad wordt beveiligd met een wachtwoord voor het wordt gemaild zodat de ontvanger het niet kan wijzigen.

In het werkblad staan combo boxen waar je gegevens mee kan invullen door uit een keuze lijst te kiezen.
Deze combo boxen zijn echter niet beveilig,deze kunnen nog steeds worden gewijzigd.

Kan ik dit op de een of andere manier oplossen dat deze ook niet meer kunnen gewijzigd worden ?

vb zoals het eruit zit als het gemaild is geweest.

Bekijk bijlage test2.rar
 
Dit zou een mogelijkheid kunnen zijn.

Code:
Private Sub Workbook_Open()
    With Sheets("controle")
        If .ProtectContents Then
            .ComboBox1.Enabled = False
            .ComboBox2.Enabled = False
            .ComboBox3.Enabled = False
            .ComboBox4.Enabled = False
            .ComboBox5.Enabled = False
            .ComboBox6.Enabled = False
            .ComboBox7.Enabled = False
            .ComboBox8.Enabled = False
            Exit Sub
        End If
    End With
End Sub
 
Laatst bewerkt:
edmoor

Ik heb de code al op verschillende plaatsen geplaats in mijn bestande code maar dan werkt mijn mail functie niet meer.:confused:
De combo boxen kunnen wel niet meer worden gewijzigd.:D

Thiswork book wordt al leeg gemaakt ook in deze code dus daar kan ik u code ook niet in zetten.

Code:
Const EMBED_ATTACHMENT As Long = 1454
Const vaCopyTo As Variant = "" 'copy mailen naar: "adres"

Sub mail()


 Dim vaRecipients As Variant
  Dim noSession As Object
  Dim noDatabase As Object
  Dim noDocument As Object
  Dim noEmbedObject As Object
  Dim noAttachment As Object


If vbNo = MsgBox("Ben je wel zeker dat je die mail wil verzenden", vbYesNo) Then Exit Sub
If vbNo = MsgBox("Heb je lotus notus open staan?", vbYesNo) Then Exit Sub

Application.DisplayAlerts = False
Sheets("adres").Select
    ActiveWindow.SelectedSheets.Delete
    Sheets("dokter").Select
    ActiveWindow.SelectedSheets.Delete
    Sheets("postcodes").Select
    ActiveWindow.SelectedSheets.Delete
Application.DisplayAlerts = True


    
    ActiveSheet.Unprotect Password:="1230"
    Cells.Select
    Selection.Locked = True
    Selection.FormulaHidden = False
    Range("E11").Select
    ActiveSheet.Protect Password:="1230", DrawingObjects:=True, Contents:=True, Scenarios:=True
    
   



        

    With ThisWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule

            .DeleteLines 1, .CountOfLines

    End With


ActiveSheet.Unprotect Password:="1230"
    ActiveSheet.Shapes("Button 13").Select
    Selection.Delete
    ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
        False
        
       
       ActiveWorkbook.SaveAs Filename:=("T:\Mag-Data\Mit pc\davy\Mensura Controle\controle al doorgemaild" & "\Controle aanvraag   " & Sheets("controle").Cells(1, 14).Value & " Doorgestuurd op " & Format(Now, "dd-mm-yyyy hh" & "u " & "mm") & ".xls")
stpath = "T:\Mag-Data\Mit pc\davy\Mensura Controle\controle al doorgemaild" 'locactie waar bijlage staat
stsubject = "Controle aanvraag   " & Sheets("controle").Cells(1, 14).Value & " Doorgestuurd op  " & Format(Now, "dd-mm-yyyy hh" & "u " & "mm") & ".xls" _

 
      

vamsg = "Goedemorgen, " & vbCrLf & vbCrLf & vbCrLf & vbCrLf & _
" Bij deze stuur ik u een controle aanvraag voor een werknemer van ons." & vbCrLf & vbCrLf & vbCrLf & vbCrLf & _
"Dit zit in een excel file die jullie kunnen afdrukken als jullie willen. " & vbCrLf & vbCrLf & _
"Het verslag van de controle arts mag naar het volgende mail adres gestuurd worden. " & vbCrLf & vbCrLf & _
" ffff@ttt.be" & vbCrLf & vbCrLf & _
" " & vbCrLf & vbCrLf & _
      "Met Vriendelijke Groeten" & vbCrLf & vbCrLf & _
      "De Hoofdmagazijniers"


'mailbody voorzien van gegevens
stfilename = "Dagstaat Magazijniers .xls" 'Bestandsnaam
stattachment = ("T:\Mag-Data\Mit pc\davy\Mensura Controle\controle al doorgemaild" & "\Controle aanvraag   " & Sheets("controle").Cells(1, 14).Value & " Doorgestuurd op " & Format(Now, "dd-mm-yyyy hh" & "u " & "mm") & ".xls")
vaRecipients = VBA.Array("hhhh@hotmail.com", "hhs@hhf.be") 'mailadressen("eerste ontvanger" , "tweede ontvanger", enz.)

                  'Bepaal de Lotus Notes COM's Objecten.
                  Set noSession = CreateObject("Notes.NotesSession")
                  Set noDatabase = noSession.GETDATABASE("", "")
                  
                  'Als Lotus Notes niet open is open dan het mail-gedeelte ervan.
                  If noDatabase.IsOpen = False Then noDatabase.OPENMAIL
                 
                  'Maak de e-mail en de bijlage.
                  Set noDocument = noDatabase.CreateDocument
                  Set noAttachment = noDocument.CreateRichTextItem("stAttachment")
                  Set noEmbedObject = noAttachment.EmbedObject(EMBED_ATTACHMENT, "", stattachment)
                                 
                  'Voeg de gegevens toe aan de gemaakte e-mail eigenschappen.
                  With noDocument
                    .Form = "Memo"
                    .SendTo = vaRecipients
                    .CopyTo = vaCopyTo
                    .Subject = stsubject
                    .Body = vamsg
                    .SaveMessageOnSend = True
                    .PostedDate = Now()
                   .Send 0, vaRecipients
                  End With
                 
                          
                  'Verwijder objecten uit het geheugen.
                  Set noEmbedObject = Nothing
                  Set noAttachment = Nothing
                  Set noDocument = Nothing
                  Set noDatabase = Nothing
                  Set noSession = Nothing
                  
                  MsgBox "De e - mail is correct verstuurd ", vbInformation
                  


End Sub
 
Maak dan een module (ProtectComboboxes) waar die code in staat in plaats van in de ThisWorkbook.
De code voor het leeg maken van ThisWorkbook wijzig je dan in:

Code:
    With ThisWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule
        .DeleteLines 1, .CountOfLines
        .AddFromString ("Call ProtectComboboxes")
    End With

Uiteraard kun je die AddFromString ook gebruiken om die regels er in te zetten:
Code:
 .AddFromString "Sheets(" & Chr(34) & "Controle" & Chr(34) & ").Combobox1.Enabled = False"
 
Laatst bewerkt:
edmoor

Heb een module aangemaakt met volgende code.

Code:
Private Sub ProtectComboboxes()
    With Sheets("controle")
        If .ProtectContents Then
            .ComboBox1.Enabled = False
            .ComboBox2.Enabled = False
            .ComboBox3.Enabled = False
            .ComboBox4.Enabled = False
            .ComboBox5.Enabled = False
            .ComboBox6.Enabled = False
            .ComboBox7.Enabled = False
            .ComboBox8.Enabled = False
            Exit Sub
        End If
    End With
End Sub

Mijn mail code zit er nu zo uit

Code:
Const EMBED_ATTACHMENT As Long = 1454
Const vaCopyTo As Variant = "" 'copy mailen naar: "adres"

Sub mail()


 Dim vaRecipients As Variant
  Dim noSession As Object
  Dim noDatabase As Object
  Dim noDocument As Object
  Dim noEmbedObject As Object
  Dim noAttachment As Object


If vbNo = MsgBox("Ben je wel zeker dat je die mail wil verzenden", vbYesNo) Then Exit Sub
If vbNo = MsgBox("Heb je lotus notus open staan?", vbYesNo) Then Exit Sub

Application.DisplayAlerts = False
Sheets("adres").Select
    ActiveWindow.SelectedSheets.Delete
    Sheets("dokter").Select
    ActiveWindow.SelectedSheets.Delete
    Sheets("postcodes").Select
    ActiveWindow.SelectedSheets.Delete
Application.DisplayAlerts = True


    
    ActiveSheet.Unprotect Password:="1230"
    Cells.Select
    Selection.Locked = True
    Selection.FormulaHidden = False
    Range("E11").Select
    ActiveSheet.Protect Password:="1230", DrawingObjects:=True, Contents:=True, Scenarios:=True
    
   



        
 With ThisWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule
        .DeleteLines 1, .CountOfLines
        .AddFromString ("Call ProtectComboboxes")
    End With


ActiveSheet.Unprotect Password:="1230"
    ActiveSheet.Shapes("Button 13").Select
    Selection.Delete
    ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
        False
        
       
       ActiveWorkbook.SaveAs Filename:=("T:\Mag-Data\Mit pc\davy\Mensura Controle\controle al doorgemaild" & "\Controle aanvraag   " & Sheets("controle").Cells(1, 14).Value & " Doorgestuurd op " & Format(Now, "dd-mm-yyyy hh" & "u " & "mm") & ".xls")
stpath = "T:\Mag-Data\Mit pc\davy\Mensura Controle\controle al doorgemaild" 'locactie waar bijlage staat
stsubject = "Controle aanvraag   " & Sheets("controle").Cells(1, 14).Value & " Doorgestuurd op  " & Format(Now, "dd-mm-yyyy hh" & "u " & "mm") & ".xls" _

 
      

vamsg = "Goedemorgen, " & vbCrLf & vbCrLf & vbCrLf & vbCrLf & _
" Bij deze stuur ik u een controle aanvraag voor een werknemer van ons." & vbCrLf & vbCrLf & vbCrLf & vbCrLf & _
"Dit zit in een excel file die jullie kunnen afdrukken als jullie willen. " & vbCrLf & vbCrLf & _
"Het verslag van de controle arts mag naar het volgende mail adres gestuurd worden. " & vbCrLf & vbCrLf & _
" Davy.Lenders@tof.be" & vbCrLf & vbCrLf & _
" " & vbCrLf & vbCrLf & _
      "Met Vriendelijke Groeten" & vbCrLf & vbCrLf & _
      "De Hoofdmagazijniers"


'mailbody voorzien van gegevens
stfilename = "Dagstaat Magazijniers .xls" 'Bestandsnaam
stattachment = ("T:\Mag-Data\Mit pc\davy\Mensura Controle\controle al doorgemaild" & "\Controle aanvraag   " & Sheets("controle").Cells(1, 14).Value & " Doorgestuurd op " & Format(Now, "dd-mm-yyyy hh" & "u " & "mm") & ".xls")
vaRecipients = VBA.Array("dff@hotmail.com", "ddd@jjf.be") 'mailadressen("eerste ontvanger" , "tweede ontvanger", enz.)

                  'Bepaal de Lotus Notes COM's Objecten.
                  Set noSession = CreateObject("Notes.NotesSession")
                  Set noDatabase = noSession.GETDATABASE("", "")
                  
                  'Als Lotus Notes niet open is open dan het mail-gedeelte ervan.
                  If noDatabase.IsOpen = False Then noDatabase.OPENMAIL
                 
                  'Maak de e-mail en de bijlage.
                  Set noDocument = noDatabase.CreateDocument
                  Set noAttachment = noDocument.CreateRichTextItem("stAttachment")
                  Set noEmbedObject = noAttachment.EmbedObject(EMBED_ATTACHMENT, "", stattachment)
                                 
                  'Voeg de gegevens toe aan de gemaakte e-mail eigenschappen.
                  With noDocument
                    .Form = "Memo"
                    .SendTo = vaRecipients
                    .CopyTo = vaCopyTo
                    .Subject = stsubject
                    .Body = vamsg
                    .SaveMessageOnSend = True
                    .PostedDate = Now()
                   .Send 0, vaRecipients
                  End With
                 
                          
                  'Verwijder objecten uit het geheugen.
                  Set noEmbedObject = Nothing
                  Set noAttachment = Nothing
                  Set noDocument = Nothing
                  Set noDatabase = Nothing
                  Set noSession = Nothing
                  
                  MsgBox "De e - mail is correct verstuurd ", vbInformation
                  


End Sub

Dan wordt de mail wel verstuurd maar krijg ik een foutmelding.
Hij gaat dan naar this workbook en daar staat in "Call ProtectComboboxes"
De foutmelding die ik krijg is
compileerfout : ongeldig buiten procedure.

Als ik dit weg klik en terug op het werkblad komen gaat hij onmiddelijk terug naar die foutmelding.

Hij gaat enkel naar de foutmelding dat ik met mijn muis over 1 van de combo boxen kom.
 
Laatst bewerkt:
Gebruik dan de 2e optie die ik in de vorige reactie gaf.
 
edmoor

Die 2de optie weet ik niet echt raar mee.

Waar moet ik dan juist deze code zetten

Code:
.AddFromString "Sheets(" & Chr(34) & "Controle" & Chr(34) & ").Combobox1.Enabled = False"
 
Code:
With ThisWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule
        .DeleteLines 1, .CountOfLines
        .AddFromString "Sheets(" & Chr(34) & "Controle" & Chr(34) & ").Combobox1.Enabled = False"
        .AddFromString "Sheets(" & Chr(34) & "Controle" & Chr(34) & ").Combobox2.Enabled = False"
        .AddFromString "Sheets(" & Chr(34) & "Controle" & Chr(34) & ").Combobox3.Enabled = False"
        .AddFromString "Sheets(" & Chr(34) & "Controle" & Chr(34) & ").Combobox4.Enabled = False"
        .AddFromString "Sheets(" & Chr(34) & "Controle" & Chr(34) & ").Combobox5.Enabled = False"
        .AddFromString "Sheets(" & Chr(34) & "Controle" & Chr(34) & ").Combobox6.Enabled = False"
        .AddFromString "Sheets(" & Chr(34) & "Controle" & Chr(34) & ").Combobox7.Enabled = False"
        .AddFromString "Sheets(" & Chr(34) & "Controle" & Chr(34) & ").Combobox8.Enabled = False"
End With
 
Laatst bewerkt:
edmoor

Moet ik de code in de module aanpassen in deze code .
En de rest allemaal laten staan zoals het staat ?

Sorry maar ben echt niet zo goed met vba:o
 
De module heb je dan niet nodig en deze heb je al in de Mail routine staan:
Code:
With ThisWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule
        .DeleteLines 1, .CountOfLines
End With

Daarin zet je dan die extra regels zoals hierboven.
 
Heb de module verwijderd.
Heb de code in de mail macro aangepast zoals je hebt beschreven maar krijg dan nog steeds een compileerfout.
Nu gaat hij weer naar thiswork book en daar staat dan het volgende in.

Code:
"Sheets("Controle").ComboBox1.Enabled = False
Sheets("Controle").ComboBox2.Enabled = False
Sheets("Controle").ComboBox3.Enabled = False
Sheets("Controle").ComboBox4.Enabled = False
Sheets("Controle").ComboBox5.Enabled = False
Sheets("Controle").ComboBox6.Enabled = False
Sheets("Controle").ComboBox7.Enabled = False
Sheets("Controle").ComboBox8.Enabled = False"


mail code is nu

Code:
Const EMBED_ATTACHMENT As Long = 1454
Const vaCopyTo As Variant = "" 'copy mailen naar: "adres"

Sub mail()


 Dim vaRecipients As Variant
  Dim noSession As Object
  Dim noDatabase As Object
  Dim noDocument As Object
  Dim noEmbedObject As Object
  Dim noAttachment As Object


If vbNo = MsgBox("Ben je wel zeker dat je die mail wil verzenden", vbYesNo) Then Exit Sub
If vbNo = MsgBox("Heb je lotus notus open staan?", vbYesNo) Then Exit Sub

Application.DisplayAlerts = False
Sheets("adres").Select
    ActiveWindow.SelectedSheets.Delete
    Sheets("dokter").Select
    ActiveWindow.SelectedSheets.Delete
    Sheets("postcodes").Select
    ActiveWindow.SelectedSheets.Delete
Application.DisplayAlerts = True


    
    ActiveSheet.Unprotect Password:="1230"
    Cells.Select
    Selection.Locked = True
    Selection.FormulaHidden = False
    Range("E11").Select
    ActiveSheet.Protect Password:="1230", DrawingObjects:=True, Contents:=True, Scenarios:=True
    
   



        
 With ThisWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule
        .DeleteLines 1, .CountOfLines
        .AddFromString "Sheets(" & Chr(34) & "Controle" & Chr(34) & ").Combobox1.Enabled = False"
        .AddFromString "Sheets(" & Chr(34) & "Controle" & Chr(34) & ").Combobox2.Enabled = False"
        .AddFromString "Sheets(" & Chr(34) & "Controle" & Chr(34) & ").Combobox3.Enabled = False"
        .AddFromString "Sheets(" & Chr(34) & "Controle" & Chr(34) & ").Combobox4.Enabled = False"
        .AddFromString "Sheets(" & Chr(34) & "Controle" & Chr(34) & ").Combobox5.Enabled = False"
        .AddFromString "Sheets(" & Chr(34) & "Controle" & Chr(34) & ").Combobox6.Enabled = False"
        .AddFromString "Sheets(" & Chr(34) & "Controle" & Chr(34) & ").Combobox7.Enabled = False"
        .AddFromString "Sheets(" & Chr(34) & "Controle" & Chr(34) & ").Combobox8.Enabled = False"
    End With


ActiveSheet.Unprotect Password:="1230"
    ActiveSheet.Shapes("Button 13").Select
    Selection.Delete
    ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
        False
        
       
       ActiveWorkbook.SaveAs Filename:=("T:\Mag-Data\Mit pc\davy\Mensura Controle\controle al doorgemaild" & "\Controle aanvraag   " & Sheets("controle").Cells(1, 14).Value & " Doorgestuurd op " & Format(Now, "dd-mm-yyyy hh" & "u " & "mm") & ".xls")
stpath = "T:\Mag-Data\Mit pc\davy\Mensura Controle\controle al doorgemaild" 'locactie waar bijlage staat
stsubject = "Controle aanvraag   " & Sheets("controle").Cells(1, 14).Value & " Doorgestuurd op  " & Format(Now, "dd-mm-yyyy hh" & "u " & "mm") & ".xls" _

 
      

vamsg = "Goedemorgen, " & vbCrLf & vbCrLf & vbCrLf & vbCrLf & _
" Bij deze stuur ik u een controle aanvraag voor een werknemer van ons." & vbCrLf & vbCrLf & vbCrLf & vbCrLf & _
"Dit zit in een excel file die jullie kunnen afdrukken als jullie willen. " & vbCrLf & vbCrLf & _
"Het verslag van de controle arts mag naar het volgende mail adres gestuurd worden. " & vbCrLf & vbCrLf & _
" Dkk@kkf.be" & vbCrLf & vbCrLf & _
" " & vbCrLf & vbCrLf & _
      "Met Vriendelijke Groeten" & vbCrLf & vbCrLf & _
      "De Hoofdmagazijniers"


'mailbody voorzien van gegevens
stfilename = "Dagstaat Magazijniers .xls" 'Bestandsnaam
stattachment = ("T:\Mag-Data\Mit pc\davy\Mensura Controle\controle al doorgemaild" & "\Controle aanvraag   " & Sheets("controle").Cells(1, 14).Value & " Doorgestuurd op " & Format(Now, "dd-mm-yyyy hh" & "u " & "mm") & ".xls")
vaRecipients = VBA.Array("kk@hotmail.com", "dkkk@ok.be") 'mailadressen("eerste ontvanger" , "tweede ontvanger", enz.)

                  'Bepaal de Lotus Notes COM's Objecten.
                  Set noSession = CreateObject("Notes.NotesSession")
                  Set noDatabase = noSession.GETDATABASE("", "")
                  
                  'Als Lotus Notes niet open is open dan het mail-gedeelte ervan.
                  If noDatabase.IsOpen = False Then noDatabase.OPENMAIL
                 
                  'Maak de e-mail en de bijlage.
                  Set noDocument = noDatabase.CreateDocument
                  Set noAttachment = noDocument.CreateRichTextItem("stAttachment")
                  Set noEmbedObject = noAttachment.EmbedObject(EMBED_ATTACHMENT, "", stattachment)
                                 
                  'Voeg de gegevens toe aan de gemaakte e-mail eigenschappen.
                  With noDocument
                    .Form = "Memo"
                    .SendTo = vaRecipients
                    .CopyTo = vaCopyTo
                    .Subject = stsubject
                    .Body = vamsg
                    .SaveMessageOnSend = True
                    .PostedDate = Now()
                   .Send 0, vaRecipients
                  End With
                 
                          
                  'Verwijder objecten uit het geheugen.
                  Set noEmbedObject = Nothing
                  Set noAttachment = Nothing
                  Set noDocument = Nothing
                  Set noDatabase = Nothing
                  Set noSession = Nothing
                  
                  MsgBox "De e - mail is correct verstuurd ", vbInformation
                  


End Sub
 
Laatst bewerkt door een moderator:
Dan is er toch nog iets anders gebeurd want in:

Code:
"Sheets("Controle").ComboBox1.Enabled = False
Sheets("Controle").ComboBox2.Enabled = False
Sheets("Controle").ComboBox3.Enabled = False
Sheets("Controle").ComboBox4.Enabled = False
Sheets("Controle").ComboBox5.Enabled = False
Sheets("Controle").ComboBox6.Enabled = False
Sheets("Controle").ComboBox7.Enabled = False
Sheets("Controle").ComboBox8.Enabled = False"

Horen die " tekens aan het begin en het einde niet te staan.
 
Laatst bewerkt door een moderator:
Sorry die " aan het begin en einde heb ik er gezet.
Wou deze eerst zo posten maar heb ze uiteindelijk toch in een code gepost maar ben de " vergeten te verwijderen.:o
 
Ok. En als je er dit van maakt?

Code:
With ThisWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule
        .DeleteLines 1, .CountOfLines
End With
Sheets("Controle").Combobox1.Enabled = False
Sheets("Controle").Combobox2.Enabled = False
Sheets("Controle").Combobox3.Enabled = False
Sheets("Controle").Combobox4.Enabled = False
Sheets("Controle").Combobox5.Enabled = False
Sheets("Controle").Combobox6.Enabled = False
Sheets("Controle").Combobox7.Enabled = False
Sheets("Controle").Combobox8.Enabled = False
 
Laatst bewerkt:
De eenvoudigste manier dus :)
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan