13. januar 2003 - 16:36Der er
4 kommentarer og 2 løsninger
Kun en Excel åbent af gangen
Hej E.
Kan man via VBA sørge for at man ikke kan åben en Excel fil samtidigt med at man har en fil åben?
En forklaring.
1 Man åbner en Excel fil, som indeholder noget kode. 2 Denne kode gør at man ikke kan åben en Excel fil mere. 3 Man lukker filen. 4 Derefter kan man åbne alle de filer man vil.
Det tror jeg ikke. Man kunne jo blænde alle åbn-knapper ud og lukke af for genvejstasterne, men man vil stadig kunne åbne fra stifinder. (dette kan dog også hindres)
Jeg kan gi' dig noget kode, der lukker de filer man forsøger at åbne umiddelbart efter åbning. dvs at de lige når at åbne inden de lukkes ned automatisk. Interesseret ?
Hmm - kan brugerne ikke bare svare nej til at åbne med macroer, og så omgå alle dine "disablinger" på den måde?
Jeg kender til Auto_Open() og Auto_Close(), men de bliver gemt i et modul der knytter sig til et regneark, og ikke selve Excel...
Derudover er der objektet Application, som jeg ofte bruger til Application.Screenupdate = True/False. Jeg kan se, at der også kan anvendes masser af andre metoder på Application, bl.a. Application.Quit. Mon ikke der er noget du kan bruge der? Bare et par strøtanker :o)
Ok, jeg har kigget lidt på det. Opret et nyt Class-module og indsæt følgende: Public WithEvents xl As Application Private Sub xl_WorkbookOpen(ByVal Wb As Workbook) Application.EnableEvents = False Wb.Close Application.EnableEvents = True End Sub
I ThisWorkBook indsæt
Private Sub Workbook_Open() Set x.xl = Application End Sub
og i et alm. modul indsæt denne public var:
Public x As New Class1
Der vil nu ske det at hvis en anden fil åbnes, bliver det øjeblikkelig lukket. For at forhindre at denne fils Before_close enabler menuerne, bliver Enableevents slået fra inden den lukker, således at Before_close ikke køres.
For at omgå martin indvending med "nej til at åbne med makro" kunne du indsætte et forsideark, og sætte alle "rigtige" ark til xlVeryHidden og lade din sub workbook_open ændre disse til xlVisible. det betyder at hvis man slår makroer fra, vil man kun kunne se din forside (med relevant info), alt andet er meget skjult. Hvis man åbner med makroer vil alt være synligt. Bak
Private Sub xl_WorkbookOpen(ByVal Wb As Workbook) If Wb.Name = ThisWorkbook.Name Then Exit Sub Application.EnableEvents = False Wb.Close Application.EnableEvents = True End Sub
Jeg løste det ved at bruge workbooks.close som den sidste linie inde end sub Da i begge kom med ting som hjalp mig på vej må i dele :-)
Man i skal have mange tak
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.