08. december 2005 - 08:22Der er
11 kommentarer og 1 løsning
Sikring mod ændring af data
Hej
Jeg står og skal bruge lidt hjælp.
Jeg har et excel regneark der henter data fra en sql-database og brugeren vil gerne sikre sig at disse data ikke kan ændres.
Regnearket er en dal af en applikatio, hvor applikationen har tilføjet ekstra funktionaliteter i excel. Data bliver kaldt via en macro der åbner en dialogboks fra applikationen og i denne dialogboks er det muligt at skrive hvilket tidsrum man ønsker data far og til.
Problemmet er nu at resultatet ikke er beskyttet mod ændringer, hvilket brugeren ikke kan acceptere.
Jeg har prøvet at beskytte arket med så får applikationen heller ikke lov til at skrive de nye data i arket? - er der andre muligheder for at beskytte arket?
Er det muligt at lave en macro der automatisk printer og lukker excel arket når man har trykket OK' i dialogboksen?
Jeg har følgende macro der åbner dialogboksen:
Sub OpenSelectionDlg() Dim MyRange As String
'Find out the selected area MyRange = ActiveWindow.RangeSelection.Address
'Select the cell that holds the log defenition Range("C23").Select
'Acivate the menu item that opens the dialog SendKeys "%F", True SendKeys "{RIGHT}", True SendKeys "{RIGHT}", True SendKeys "{DOWN}", True SendKeys "{DOWN}", True SendKeys "{ENTER}", True
'Select the area that was selected from the beginning Range(MyRange).Select
End Sub
Er det muligt at få denne macro afspillet automatisk så snart arket åbnes.
kabbak - det lader til ikke at fungere?? - Hvis jeg forstår dig rigtigt så har jeg beskytte hele arket med password 'Test' og indsat følgende kode i macroen:
Sub Makro2() Worksheets("Report").Unprotect ("Test")
Sub OpenSelectionDlg() Dim MyRange As String
'Find out the selected area MyRange = ActiveWindow.RangeSelection.Address
'Select the cell that holds the log defenition Range("C23").Select
'Acivate the menu item that opens the dialog SendKeys "%F", True SendKeys "{RIGHT}", True SendKeys "{RIGHT}", True SendKeys "{DOWN}", True SendKeys "{DOWN}", True SendKeys "{ENTER}", True
'Select the area that was selected from the beginning Range(MyRange).Select
Worksheets("Report").Protect Password:="Test", DrawingObjects:=True, Contents:=True, Scenarios:=True End Sub
Men jeg får samme systemfejl som hvis jeg beskytter hele arket med det samme.
jkrons - jeg venter med at prøve dit forslag, men jeg forstår ikke helt dit svar ;-)
Skal jeg oprette et nyt modul? eller hvad er det du mener - er ikke super til macroer ;-)
Sub OpenSelectionDlg() Dim MyRange As String Worksheets("Report").Unprotect ("Test") 'Find out the selected area MyRange = ActiveWindow.RangeSelection.Address
'Select the cell that holds the log defenition Range("C23").Select
'Acivate the menu item that opens the dialog SendKeys "%F", True SendKeys "{RIGHT}", True SendKeys "{RIGHT}", True SendKeys "{DOWN}", True SendKeys "{DOWN}", True SendKeys "{ENTER}", True
'Select the area that was selected from the beginning Range(MyRange).Select
Worksheets("Report").Protect Password:="Test", DrawingObjects:=True, Contents:=True, Scenarios:=True End Sub
den så underlig ud du haved 2 sub i starten, det går ikke
Husk at beskytte arket manuelt, med Passwordet Test først, inden virker det ikke.
Den kan jo ikke Unprotecte noget der ikke er beskyttet, med det korekte password
kabbak - tak for hjælpen... jeg havde forstået at beskytte arket ;-)
din kode virker egentligt som den skal, men der er et problem når filen startes op.
Applikationen hvorfra arket bliver kaldt, opdatere automatisk felterne udfra sidste indstilling og dette betyder at der kommer en fejlmeddelse da arket nu er beskyttet.
Jeg har prøvet at kigge på jkrons forslag, men har ikke kunne finde ud hvad der skal stå hvor...?? har været inde i 'Worksheet' under commandoen 'Open' - og har prøvet at kopiere din kode, hvilket ikke fungerede??
Håber i har tålmodighed til fortsat at hjælpe en stakkel .-)
I VBE skal du vælge ThisWorkbook, som kabbak skriver. Der kopierer du min kode ind. Mellem linierne
Private Sub Workbook_Open() og End Sub
skal du så have din kode, fx:
Private Sub Workbook_Open() Dim MyRange As String Worksheets("Report").Unprotect ("Test") 'Find out the selected area MyRange = ActiveWindow.RangeSelection.Address
'Select the cell that holds the log defenition Range("C23").Select
'Acivate the menu item that opens the dialog SendKeys "%F", True SendKeys "{RIGHT}", True SendKeys "{RIGHT}", True SendKeys "{DOWN}", True SendKeys "{DOWN}", True SendKeys "{ENTER}", True
'Select the area that was selected from the beginning Range(MyRange).Select
hej igen...jeg har ikke glemt denne tråd, men har derimod arbejdet meget med at få det til at virke....men jeg har stadig et problem tilbage :-(
Som tidligere skrevet så er det en applikation der åbner denne excel-fil og applikationen har også en eller anden forbindelse med excel og derfor virker Private Sub Workbook_Open() ikke.
Jeg har nu prøvet at sætte en msgbox på ALLE valgmulighederne i Workbook og der er kun 3 stk der 'popper' op - SheetCalculate, SheetChange og SheetSelectionChange.
Jeg har så prøvet at indsætte protect/unprotect i disse 3 stk. med så får jeg en fejl og intet virker derefter.
Med ovenstående kode '08/12-2005 12:04:10' virker den næsten. Jeg mangler blot at 'klikke' OK til en fejlboks uden fejlmeddelelse. Er der en standard macro som ved fejl klikker ok....
Jeg har virkelig brug for at få løst dette problem asap.
kabbak - vil du venligst aflevere halvdelen af pointene til jkrons.
tak for hjælpen
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.