04. juni 2006 - 11:13Der er
11 kommentarer og 2 løsninger
Makro med svarboks ?
På mit arbejde arbejder vi i Citrix. Der er brug for at indstille søgestier for filplaceringer i Word og Excel. Til det formål har jeg lavet makroer. Men da vi arbejder i afdelinger har det til Word været nødvendigt at lave 3 forskellige filer med makroer der starter ved åbning af filen. (Dette gælder også til Excel) Er det ikke muligt at lave en fil hvor man får mulighed for at vælge afdeling inden resten af makroen køres?
Her er makroen jeg bruger: Private Sub Document_Open() Options.DefaultFilePath(Path:=wdDocumentsPath) = _ "Drev:\MAPPE\H_AFD\Institution\Afdelings-hus\" Options.DefaultFilePath(Path:=wdUserTemplatesPath) = _ "Drev:\MAPPE\H_AFD\Institution\Lokale Skabeloner\" Options.DefaultFilePath(Path:=wdWorkgroupTemplatesPath) = _ "Drev:\Mappe\H_AF\" Options.DefaultFilePath(Path:=wdAutoRecoverPath) = "Drev:\" Options.DefaultFilePath(Path:=wdStartupPath) = _ "Drev:\Application Data\Microsoft\Word\STARTUP\" End Sub
Jeg forestiller mig at der skal åbne en dialogboks der spørger hvilken afdeling brugeren skal indstilles til. Efter svar skal makroen indstille en variabel til denne afdelings bogstavbetegnelse (A, B eller C). Makroen skal så i den første [Options.DefaultFilePath] indstilles til [Options.DefaultFilePath(Path:=wdDocumentsPath) = _ "Drev:\MAPPE\H_AFD\Institution\=(Variablens værdi)-huset\"]
Skal brugeren spørges hver gang eller ere det kun første gang de skal spørges? Og skal de have muligehd for at ændre valget senere?
Løsningen kunne være en fil, brugeren åbner som gemmer afdelingsnummeret i registrereingsdatabasen under den enkelte bruger, hvorefter din oprindelige makro bruger denne variabel fra registreringsdatabasen. Hvad siger du til den løsning?
Filen skal bruges hver gang indstillingerne af den ene eller anden grund 'forsvinder', altså skal der spørges hver gang filen åbnes. Disse indstillinger skal laves særskilt for hver enkelt bruger (pt. 29 fordelt på 3 afdelinger) da systemet opretter en virtuel computer ved hvert login og genopretter indstillinger der gemmes i en fil ved logout. Jeg har ikke adgang til denne fil.
Svarene kommer noget langsomt i dag. Gad vide om det kan være fordi det er pinse? Nu skal jeg imidlertid på arbejde. Vender tilbage til spørgsmålet i morgen og tirsdag.
Indsæt nedenstående kode i et almindeligt modul i en skabelon. Koden skal køres på alle maskiner, for hver bruger på maskinen. Den gemmer afdelingens bogstav i registreringsdatabasen.
Sub AutoOpen() Do strAfdeling = UCase(InputBox("Indtast afdeling (A,B eller C)", "Afdeling", "A")) x = x + 1 Loop Until strAfdeling = "A" Or strAfdeling = "B" Or strAfdeling = "C" Or x = 3
If strAfdeling <> "" Or x < 3 Then SaveSetting "Adresse", "Bruger", "Afdeling", strAfdeling Else MsgBox "Afdelingen er ikke blevet gemt" End If End Sub
Det virker ikke. Har jeg gjort noget forkert? Jeg sætter lige koden ind som den ser ud nu og uden de omskrivninger jeg brugte oprindeligt: Sub AutoOpen() Do strAfdeling = UCase(InputBox("Indtast afdeling (A,B eller C)", "Afdeling", "A")) x = x + 1 Loop Until strAfdeling = "A" Or strAfdeling = "B" Or strAfdeling = "C" Or x = 3
If strAfdeling <> "" Or x < 3 Then SaveSetting "Adresse", "Bruger", "Afdeling", strAfdeling Else MsgBox "Afdelingen er ikke blevet gemt" End If End Sub Private Sub Document_Open() strSprogVariabel = GetSetting("Adresse", "Bruger", "Afdeling", "") Options.DefaultFilePath(Path:=wdDocumentsPath) = _ "G:\INST\PSF\Hoejsletten\=" & strSprogVariabel & "huset\" Options.DefaultFilePath(Path:=wdUserTemplatesPath) = _ "G:\INST\PSF\Hoejsletten\Lokale Skabeloner\" Options.DefaultFilePath(Path:=wdWorkgroupTemplatesPath) = _ "S:\Forvaltning\PSF\" Options.DefaultFilePath(Path:=wdAutoRecoverPath) = "W:\" Options.DefaultFilePath(Path:=wdStartupPath) = _ "W:\Application Data\Microsoft\Word\STARTUP\" End Sub
Meningen var at makroen skulle ligge i en alm. excel-fil, ikke i en skabelon. For at man let kan finde en skabelon kræver det at man er rimeligt hjemmevant i stifinder, det er brugerne på mit arbejde ikke. Det oprindelige problem er at indstillingerne ofte 'forsvinder' når der bliver lavet om på netværket eller på Citrix, og det gør der temmelig ofte. Den makro jeg brugte kørte automatisk når filen blev åbnet. Jeg havde så en fil for hvert hus (afdeling). Den løsning jeg søger er, at der kun skal være en fil (ikke en skabelon) hvor en makro kører automatisk når filen åbner, spørger hvilket hus der skal indstilles til, indstiller linien Options.DefaultFilePath(Path:=wdDocumentsPath) = _ "G:\INST\PSF\Hoejsletten\=" & strSprogVariabel & "huset\" til det valgte hus (eks. A-huset)og derefter kører resten af makroen. Sådan som jeg nu har lavet makroen (med dine anvisninger) kører den kun når jeg lægger den i i ThisDocument og indlejrer det hele i en Sub Document_Open(). Der er bare det problem at den ikke indstiller Options.DefaultFilePath(Path:=wdDocumentsPath) = . . . . . linjen. I den næste kommentar sætter jeg koden ind som den ser ud nu.
Sub Document_Open() Do strAfdeling = UCase(InputBox("Indtast afdeling (A,B eller C)", "Afdeling", "A")) x = x + 1 Loop Until strAfdeling = "A" Or strAfdeling = "B" Or strAfdeling = "C" Or x = 3
If strAfdeling <> "" Or x < 3 Then SaveSetting "Adresse", "Bruger", "Afdeling", strAfdeling Else MsgBox "Afdelingen er ikke blevet gemt" End If strSprogVariabel = GetSetting("Adresse", "Bruger", "Afdeling", "") Options.DefaultFilePath(Path:=wdDocumentsPath) = _ "G:\INST\PSF\Hoejsletten\"strSprogVariabel&"-huset\"" Options.DefaultFilePath(Path:=wdUserTemplatesPath) = _ "G:\INST\PSF\Hoejsletten\Lokale Skabeloner\" Options.DefaultFilePath(Path:=wdWorkgroupTemplatesPath) = _ "S:\Forvaltning\PSF\" Options.DefaultFilePath(Path:=wdAutoRecoverPath) = "W:\" Options.DefaultFilePath(Path:=wdStartupPath) = _ "W:\Application Data\Microsoft\Word\STARTUP\"
End Sub
Afvikling af makroen standser med en Syntax error i denne linje: Options.DefaultFilePath(Path:=wdDocumentsPath) = _ "G:\INST\PSF\Hoejsletten\"strSprogVariabel&"-huset\""
Det var godt du fandt ud af det :-) Jeg troede du ikke ville have brugeren skulle spørges hver gang - derfor den lille krølle med at gemme i registreringsdatabasen.
Vi har simpelt hen ikke adgang til at ændre i registreringsdatabasen på mit arbejde. Din kode havde tilsyneladende ikke nogen virkning overhovedet da jeg testede den. Jeg fik bare en fejlmelding når koden nåede til den linje hvor den rette mappe skulle indskrives.
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.