Avatar billede boligkode Nybegynder
14. oktober 2007 - 15:55 Der er 13 kommentarer og
1 løsning

Brugeroplysninger - igen - VBA

Fået stor hjælp til en forståelse af mulighederne for oprettelse af brugeroplysninger i Word. Nu begynder begrænsningerne at dukke op - 1) I forhold til dialogboks 2) i forhold til skabeloner der bruger informationerne:

1)
Lavet en simpel kode i en dialogboks, som gemmer nogle vilkårlige brugeroplysninger på brugerens maskine. Se kode:

Private Sub CommandButtonOK_Click()
Afdnavn = TextBoxAfd.Value
Email = TextBoxEmail.Value
Titel = TextBoxTitel.Value
Tlf = TextBoxTlf.Value
SaveSetting "EgneOplysninger", "Underskriver", "Afdnavn", Afdnavn
SaveSetting "EgneOplysninger", "Underskriver", "Email", Email
SaveSetting "EgneOplysninger", "Underskriver", "Titel", Titel
SaveSetting "EgneOplysninger", "Underskriver", "Tlf", Tlf
Brugeropl.Hide
End Sub

Denne kode virker fint. Oplysninger bliver gemt uden problemer.

Spm.1A
Men hvordan kan jeg sikre mig at brugeren fx. skriver telefonnummer som 'XX XX XX XX' og ikke som 'XXXX XXXX', og hvordan sikre jeg mig, at der fx indgår et '@' i mailadressen osv.?

Spm.1B
Kan man få den til at oplyse brugeren om allerede registreret data i de enkelte felter?

Spm.1C
Pt lavet den i normal.dot. I excel ville jeg lave den i et særskilt dokument - og gemme det som et tilføjelsesprogram, for derefter at installere det på de forskellige maskiner. Hvordan gør man det lettest i Word?

Spm.1D
I excel ville jeg lave det som en macro, hvor jeg bad den om at bruge dialogboksen ved et kald '.show' og herefter bruge dataene fra indtastningerne i dialogbokse i det videre forløb i macroen. Men det er måske ikke det smarteste?

Skabelonerne, der skal bruge disse brugeoplysninger

Spm 2A
I alle skabelonerne ville jeg gerne checke om oplysninger lå på brugerens maskine - hvis ikke - så skal macroen i spm1 starte op. Men det kan jeg ikke få til at fungere. Kan nogen hjælpe?

Spm 2B
Imidlertid kan jeg godt få dataene (brugeroplysninger) over i skabelonen ved at indsætte et bogmærke i skabelonen og skrive følgende kode i en opstartsmakro:
ActiveDocument.Bookmarks("Afdnavn").Range = _
GetSetting("EgneOplysninger", "Underskriver", "Afdnavn")
Er det den smarteste metode?

Mange spørgsmål - håber at kunne få hjælp til nogle af dem. På forhånd tak for hjælpen.
Avatar billede boligkode Nybegynder
14. oktober 2007 - 16:13 #1
Angående 2A kan jeg sagtens checke om fx titel har værdien "" med en IF-sætning a la:

Private Sub Document_Open()
If GetSetting("EgneOplysninger", "Underskriver", "titel") = "" Then
MsgBox "Du har ikke registreret en Titel"
Else
MsgBox "Titel: " & GetSetting("EgneOplysninger", "Underskriver", "Titel")
End If
End Sub

Men hvordan får jeg den makro startet, som jeg har gerne skulle have installeret på brugerens maskine jf spm 1C?
Avatar billede word-hajen Nybegynder
14. oktober 2007 - 16:20 #2
1A. Du skal ikke sikre dig, at brugeren skriver tlf.nummer sådan - tværtimod. Du skal derimod sørge for at formatere det korrekt, når det bliver indsat i de dokumenter, hvor det skal bruges.

If Email <> "" then
    If Instr(1, Email, "@") = 0 then '@ mangler i emailadressen
    End if
End if

1B. Når du fyrer dialogboksen i luften, udfylder du de forskellige kontroller med de værdier, der allerede er i registreringsdatabasen.

TextBoxAfd.Value = GetSetting("EgneOplysninger", "Underskriver", "Afdnavn")

1C. Fy! ;-) Aldrig bruge Normal.dot - det er brugerens egen "legeplads". Du laver en helt normal skabelon, som du derefter placerer i Words startfolder (aflæses/ændres via Office-knappen, Word-indstillinger, Avanceret, Filplaceringer). Den bliver så indlæst som en global skabelon, når Word startes.

1D. Jo.

2A. Du skal bruge Application.Run og så navnet på den procedure, der befinderr sig i din globale skabelon (som din Normal.dot nu også er), og som derefter smider din form i luften. Hvis det altså er det, der er problemet? Ellers må du lige skrive, hvad problemet er.

2B. Ja, det lyder som en god idé at få indsat de oplysninger, som nu findes i registreringsdatabasen, når man danner et nyt dokument. Så kan du også indsætte præcis de oplysninger, der er behov for (og det rigtige sted) i de respektive dokumenttyper.
Avatar billede boligkode Nybegynder
14. oktober 2007 - 17:39 #3
Tak for hurtigt svar.

1C. Med på start-folder. Supert
1D. Fik det til at fungere alligevel - men det er jo også reelt ligegyldigt om koden er i selve macroen eller i macroen bag userformen. Den er jo ikke så omfattende.
2A. Tak for det. Jeg skal således blot skrive: Application.Run.Brugeroplysningsmakronavn. Ej testet endnu.
2B. Supert. Det kan jeg nemlig få til at fungere.

1A. Jo, man kan jo sige at al tilpasning skal ske i skabelonen og ikke i dialogboksen. Men det er vel under forudsætning, at man styre hvor mange data, som kan indtastes af brugere. Ved indtastning af tlf som 'xx xx xx xx', så har man pludselig 11 karakterer - hvor nogen slipper af sted med 8 karakterer ('xxxxxxxx'). Eller?

1B. Den tror jeg ikke, at jeg har fanget helt.
Avatar billede word-hajen Nybegynder
14. oktober 2007 - 17:50 #4
2A. Application.Run "NavnPåProcedure"

1A. Fjern alle mellemrum, når brugeren klikker OK i dialogboksen (TextBoxTlf = replace(TextBoxTlf, " ", "")

1B. Du spurgte, hvordan man informerede brugeren om allerede indtastede værdier. Det er vel kun nødvendigt, hvis dialogboksen, hvor brugeren skal indtaste sine oplysninger, bliver vist (kan være ved mgl. oplysninger eller hvis brugeren har behov for at rette de allerede eksisterende oplysninger). Når du så smider formen i luften, sørger du for at hente værdierne fra registreringsdatabasen og indsætter dem i de respektive felter i dialogboksen. Hvis det var noget helt andet, du mente, må du lige sige til.
Avatar billede boligkode Nybegynder
14. oktober 2007 - 18:00 #5
2A og 1A supert. Tak

1b. Enig. Men hvordan smider jeg dem ind i indtastningsfeltet (eller evt. ved siden af). Jeg kan ikke gennemskue hvordan jeg laver koden....

Suppl.spørgmål: Hvis jeg istedet for en TextBox vil lave en ComboBox (fx under titel med variablerne eksempelvis 'Skorstensfejer' og 'Malersvend'). Jeg kan ikke gennemskue hvorledes Combobox'en finder variablerne
Avatar billede boligkode Nybegynder
14. oktober 2007 - 18:31 #6
Hej igen. Jeg har testet indlæggelse af skabelon med makroer i Start-biblioteket. Det fungere rigtig fint. Jeg kan se det i VBA. Ved ikke om du har 2007 - men jeg kan ikke finde makroen når jeg gerne vil tilføje den som 'Hurtig Adgangs Knap'. Den er heller ikke vist under 'Tilføjelsesprogrammer'.
Avatar billede word-hajen Nybegynder
14. oktober 2007 - 18:59 #7
1B. Du placerer f.eks. koden

TextBoxAfd.Value = GetSetting("EgneOplysninger", "Underskriver", "Afdnavn")

på enten Initialize- eller Activate-eventet på din form.

Hvad mener du med, hvordan comboboxen finder variablerne? Er det, fordi du ikke ved, hvordan du tilføjer tekster til comboboxen? I så fald kan du bruge Me.ComboBox1.AddItem "Malersvend" osv.

Mht. brugergrænseflade (og ja, jeg har 2007)
Du kan for det første ikke finde din procedure, fordi den befinder sig i en global indlæst skabelon. For det andet skal du være opmærksom på, at din Hurtig adgangs-knap er din egen, og den vil IKKE eksistere hos de andre brugere, med mindre de også tilføjer den (dårlig løsning, hvis du spørger mig).

Fanen tilføjelsesprogrammer viser kun værktøjslinjer, som enten er dannet i en tidligere version af Word eller som du har oprettet via kode.

Hvis du har mod, synes jeg, at du skulle overveje at kaste dig ud i at ændre Ribbon/Båndet i stedet. Det giver et meget bedre resultat og du har flere muligheder. Du kan downloade en Custom UI Editor, som kan hjælpe dig med det. Jeg har i øvrigt lige lavet nøjagtig det trick med en global indlæst skabelon (på under 2 min.).
Avatar billede word-hajen Nybegynder
14. oktober 2007 - 19:00 #8
Avatar billede boligkode Nybegynder
14. oktober 2007 - 19:06 #9
Tusind, tusind tak.

Enig i at hurtig adgangs knappen er fuldstændig håbløs - når man taler flere brugere. Der er mange fordele i Office 2007 - men en af bagdelene er da vist at egenudviklet værktøjslinierne forsvandt.

Jeg prøver med dine løsninger og forslag.

Tusind tak for al din hjælp. Jeg har de seneste dage virkelig fået øjnene op for en virkelig god standardisering af skabelonerne for lige p.t. 20 kollegaer. Men lur mig om resten af organisationen (over 100) ikke snart vil bruge de samme værktøjer.

Læg et svar.
Avatar billede word-hajen Nybegynder
14. oktober 2007 - 19:16 #10
Velbekomme.

Og sig bare til, hvis du vil have lidt intro til at "manipulere" Ribbon/båndet med Custom UI Editor.

Ja, en standardisering af skabeloner og værktøjer for brugere er guld værd :-)
Avatar billede boligkode Nybegynder
14. oktober 2007 - 19:22 #11
Dit link ser rigtig godt ud. Jeg kan nok ikke nøjes med 2 minutter. Det kræver noget xmlviden og sammenhængen med ribbons - som jeg ikke lige p.t. har - forsøger p.t. at 'tygge' mig igennem.......

Har downloadet og ser blandt andet på de 2 eksempler for excel og word - som er inkluderet. Hvorledes får man dem gemt - og hvor?
Avatar billede word-hajen Nybegynder
14. oktober 2007 - 19:46 #12
Gemt? Hvad mener du?

Du får lige en hurtig-"fætter" til, hvad jeg har gjort. Åbn Custom UI Editor. Klik på "Åbn"-ikonet, find og udvælg din skabelon. Klik på Sample, vælg Custom Tab. Så får du strukturen forærende. Jeg har så rettet til følgende:

**********
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
    <ribbon startFromScratch="false">
        <tabs>
            <tab id="MinDialog" label="Weee.....">
                <group id="customGroup" label="Brugeroplysninger">
                    <button id="EnterUserInfo" label="Indtast/redigér brugeroplysninger" size="large" onAction="Callback" />
                </group>
            </tab>
        </tabs>
    </ribbon>
</customUI>
**************

Så har jeg gemt og lukket UI Editoren. Åbnet min skabelon og lavet følgende 2 procedurer:

Public Sub ShowMyForm()
    UserForm1.Show
End Sub

'Callback for customButton onAction
Sub Callback(control As IRibbonControl)
    If control.ID = "EnterUserInfo" Then
        Call ShowMyForm
    End If
End Sub
************

Gem og luk skabelonen. Indlæs den som en global skabelon - vupti - du har nu fået en ekstra fane og en knap.

Ovenstående er ikke særlig kønt, men til en test er det ok.
Avatar billede boligkode Nybegynder
14. oktober 2007 - 20:21 #13
Supert. Jeg har kikket på det. Det lykkes ikke helt.

Kan være fordi jeg blot kopierede din tekst ind og slettede 'sample'-teksten
Kan være fordi at skabelonen ikke lå det rigtige sted (altså i skabelonbiblioteket)(flyttede rundt på filen)
De 2 makroer skal de ligge i 'thisdocument' eller som særskilt modul.

Jeg vil teste lidt senere igen.

Tak endnu engang
Avatar billede word-hajen Nybegynder
14. oktober 2007 - 20:29 #14
Skal og skal.... Koden kan være begge steder, men jeg har placeret den i et særskilt modul. Jeg vil ikke placere kode, der ikke skal fyres i luften automatisk (New, Open, Close) i ThisDocument.
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
Tag et kursus i Word og øg effektiviteten

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