20. april 2004 - 10:49Der er
19 kommentarer og 2 løsninger
Hjælp til makro
Jeg har en fil med ca. 50 knapper med tilhørende makroer der hver især åbner diverse filer. Inden den åbner filen tester den på om filen er skrivebeskyttet og i positiv fald giver den meddelelse herom.
Nu kunne jeg godt tænke mig at selve testen var i en overordnet makro evt. kaldet "beskyttelse", således at jeg ikke skal skrive den samme makrostump ind i 50 rutiner...men alene kunne nøjes med at indtaste filennavnet i de 50 og henvise til "beskyttelse". Kan nogen evt. hjælpe med det. ??
Jeg indsætter lige den nuværende makro :
Sub STED_rap() application.DisplayAlerts = False
On Error GoTo test Workbooks.Open "K:\OEKONOMI\Menu\Budget\Rap\STED_rap.XLS", , , , , , , , , , False Exit Sub test: svar = MsgBox("Filen er låst af anden bruger. Åbn alligevel ??", vbOKCancel) If svar = 1 Then Workbooks.Open "K:\OEKONOMI\Menu\Budget\Rap\STED_rap.XLS" Else: Exit Sub
Brug af AI afslører de svagheder, virksomheder allerede har opbygget gennem års cloud-transformation, nye SaaS-løsninger og fragmenterede sikkerhedssystemer.
Function Svar() as Integer svar = MsgBox("Filen er låst af anden bruger. Åbn alligevel ??", vbOKCancel) End Function
Og så kan SUb'en ændres til
Sub STED_rap() application.DisplayAlerts = False
On Error GoTo test Workbooks.Open "K:\OEKONOMI\Menu\Budget\Rap\STED_rap.XLS", , , , , , , , , , False Exit Sub test: If svar = 1 Then Workbooks.Open "K:\OEKONOMI\Menu\Budget\Rap\STED_rap.XLS" Else: Exit Sub
Som du kan forstå skriver jeg fordi jeg ikke er en makro ekspert, jeg har netop brug for hjælp til dette. Det jeg efterlyser lyder som noget af det du forslår...men det er ikke nok hjælp for mig...."global konstant" siger mig nada....jeg har brug for du skriver begge de 2 makroer....helt præcist.
Det som det hele handler om er at jeg gerne vil være fri for at have 50 lange makroer som er ens og hvis eneste variabel alene er fil navnet.
Du kan også bruge nedenstående - så indeholder sub'en kun én linie.
Global Const strSvar As String = "Filen er låst af anden bruger. Åbn alligevel ??"
Function AabenFil(strFilNavn As String) application.DisplayAlerts = False On Error GoTo test Workbooks.Open strFilNavn, , , , , , , , , False Exit Sub test: svar = MsgBox(strSvar, vbOKCancel) If svar = 1 Then Workbooks.Open strFilNavn Else: Exit Sub application.DisplayAlerts = True End Function
Function AabenFil(strFilNavn As String) application.DisplayAlerts = False On Error GoTo test Workbooks.Open strFilNavn, , , , , , , , , False Exit Sub test: svar = MsgBox("Filen er låst af anden bruger. Åbn alligevel ??", vbOKCancel) If svar = 1 Then Workbooks.Open strFilNavn Else: Exit Sub application.DisplayAlerts = True End Function
Tja, funktionen kunne godt lige trimmes på et par punkter (desuden sikres nu at Displaylerts er True, når funktionen slutter):
Function AabenFil(strFilNavn As String) application.DisplayAlerts = False On Error GoTo test Workbooks.Open strFilNavn, , , , , , , , , False application.DisplayAlerts = True Exit Function test: svar = MsgBox("Filen er låst af anden bruger. Åbn alligevel ??", vbOKCancel) If svar = 1 Then Workbooks.Open strFilNavn application.DisplayAlerts = True End Function
Sub STED_rap() AabenFil("K:\OEKONOMI\Menu\Budget\Rap\STED_rap.XLS") End Sub
YES....Se nu er vi inde på noget af det helt rigtige...det er lige noget i den stil jeg søger....jeg har kopieret din makro ind...filen åbner også fint....men meddelsesboksen vises ikke hvis filen er skrivebeskyttet ??
Husk at hvis alle filerne er placeret i samme mappe (eller bare første del af navnet er det samme), så er der mulighed for at forenkle sub'en en lille smule mere.
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.