Avatar billede tisbris Nybegynder
08. december 2005 - 08:22 Der 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.

Det var mange spørgsmål, håber i kan hjælpe.

Brian
Avatar billede kabbak Professor
08. december 2005 - 08:35 #1
Fjern arkbeskyttelsen i starten af makroen og sæt den så til igen når data er hentet.


Sub Makro2()
Worksheets("Ark1").Unprotect ("Test")
'Din kode


Worksheets("Ark1").Protect Password:="Test", DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub
Avatar billede jkrons Professor
08. december 2005 - 09:12 #2
Til spørgsmål to:

Læg koden i ThisWorkbook modulet. Og ret den til

Private Sub Workbook_Open()
'her kommer din kode uden sub og end sub linijerne.
End Sub
Avatar billede tisbris Nybegynder
08. december 2005 - 11:02 #3
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 ;-)
Avatar billede kabbak Professor
08. december 2005 - 12:04 #4
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
Avatar billede tisbris Nybegynder
08. december 2005 - 13:29 #5
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  .-)
Avatar billede kabbak Professor
08. december 2005 - 14:02 #6
så lås op i Workbook open

det er I ThisWorkbook modulet
Avatar billede jkrons Professor
08. december 2005 - 17:34 #7
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


Worksheets("Report").Protect Password:="Test", DrawingObjects:=True, Contents:=True, Scenarios:=True

End Sub
Avatar billede tisbris Nybegynder
13. december 2005 - 08:32 #8
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.

Endnu engang tak for hjælpen
Avatar billede tisbris Nybegynder
18. januar 2006 - 19:56 #9
dette kom aldrig til at virke - læg et svar begge to da i begge kom med løsningen, det fungere bare ikke under min applikation.
Avatar billede kabbak Professor
25. januar 2006 - 23:19 #10
ok, hvis det virkede
Avatar billede jkrons Professor
26. januar 2006 - 09:19 #11
Ok.
Avatar billede tisbris Nybegynder
01. februar 2006 - 07:24 #12
kabbak - vil du venligst aflevere halvdelen af pointene til jkrons.

tak for hjælpen
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester