Avatar billede dimle Nybegynder
23. oktober 2003 - 11:30 Der er 38 kommentarer og
1 løsning

Oprette et "felt" som viser en popupbesked for brugeren

Hvordan indsætter jeg et "felt" i en skabelon som viser en popupbesked for brugeren.

Brugeren skal anvende en skabelon, hvor han/hun først udfylder nogle filin-felter. Til sidst i dokumentet skal brugeren så huskes på et eller andet og det er her popupbeskeden kommer ind - men hvordan???
Avatar billede rvm Nybegynder
23. oktober 2003 - 12:56 #1
Hvornår skal det ske?

Hvis det skal ske automatisk må du udarbejde en makro, der f.eks. startes når dokumentet lukkes:

Et Forslag:

Sub Document_Close()
    Msgbbox = "Tekst"
End Sub

Makroen skal ligge i modulet ThisDocument
Avatar billede rvm Nybegynder
23. oktober 2003 - 12:57 #2
Der er lige et "b" for meget i Msgbox *S*
Avatar billede dimle Nybegynder
23. oktober 2003 - 13:28 #3
Det skal ske lige efter alle filin felter er udfyldt... inden dokumentet lukkes men ikke når det lukkes.


Kan man ikke også få vist dokumentet inden man begynder at udfylde alle filin-felter? Det kunne være ret rart at kunne se hvilket dokument man sidder med hvis man ikke er helt sikker. Som det er nu vises bare en blank side indtil alle filin-felter er udfyldt.
Avatar billede rvm Nybegynder
23. oktober 2003 - 13:40 #4
Fill-in felter er sat til at starte, når dokumentet åbnes, hvilket gør at man ikke kan se dokumenet :-(

Men hvis du ikke har Fill-in felter i sidehovedet, så ville jeg erstatte dem med formularfelter og beskytte dokumentet. På det sidste formularfelt ville jeg så lave en makro, der viser din besked. Jeg kan send dig et eksempel *S*
Avatar billede dimle Nybegynder
23. oktober 2003 - 15:28 #5
Du må gerne sende et eksempel - skabelon@dimle.dk. Men hvad er forskellen på et filin-felt og et formular-felt?
Avatar billede rvm Nybegynder
24. oktober 2003 - 07:51 #6
Er sendt *S*

For nærmere uddybning af formularfeltet kan jeg henvise til hjælpen i Word - der står meget mere end jeg kan skrive her (søg efter "felt")*S*
Avatar billede thor.ostergaard Nybegynder
24. oktober 2003 - 08:17 #7
Jeg ville nu overveje at lave en userform, men det kræver at man kan lidt VBA. Du kan se (og hente) et par eksempler her:
http://www.kursusmaterialer.dk/Word%202000%20skabeloner/Filer/Oversigt.aspx
Husk at filerne skal gemmes som .dot filer og at du skal have dit makro sikkerhedsniveau til mellem eller lav, hvis det skal virke.
Der er også lidt materiale om at lave userforms på www.kursusmaterialer.dk, men det er mest beregnet til at støtte undervisning og ikke så meget til selvstudie.
Avatar billede rvm Nybegynder
24. oktober 2003 - 09:11 #8
->thor.ostergaard: Jeg er enig med dig i at man kan lave en userform, men det kræver jo at man kan programmere, hvilket almindelige formularfelter ikke kræver. Samtidigt er den store fordel ved formularfelter, at man kan se dokumentet og udfylde det løbende (også hvis det bare er nogle få oplysninger, der skal indsættes før dokumentbeskyttelsen fjernes).
Avatar billede dimle Nybegynder
24. oktober 2003 - 09:14 #9
Det kan også være at I kan hjælpe med om jeg egentligt gør det her jeg laver rigtigt i stedet - for det er nok egentligt det i sidste ende.

Jeg har en række .dot-skabeloner som (næsten) alle skal anvende en VB-kode der består af to moduler, som jeg har lavet. VB-koden henter adresseoplysninger mv. fra en Notesdatabase ud fra hvilken bruger der er logget på maskinen. Som det er nu, har jeg tilføjet de to moduler til alle dokumenter, og det er jo ikke særligt smart da der er ca. 300 stk. og hvis jeg bare skal rette en lille ting skal jeg til at igennem alle dokumenter igen. Det jeg gør nu ved hvert dokument er:

1. Jeg går ind i VB-editoren fra word og tilføjer de 2 moduler
2. Tilføje en kode til ThisDocument, som starter VB-koden når dukumentet åbnes.
3. Tilføje en reference til Lotus Notes (Lotus Domino Objects)

Er det den rigtige måde jeg gør det på - jeg synes det virker besværligt. Man man ikke få alle de .dot dokumenter til at anvende de 2 moduler??
Avatar billede dimle Nybegynder
24. oktober 2003 - 09:17 #10
Ok - lige for at sætte niveauet, så har jeg programmeret over 4 år i VB og har allerede lavet den VB-kode som jeg lige har beskrevet. Det er egentligt bare hvordan man får word til at bruge det rigtigt og mest smart!!!
Avatar billede rvm Nybegynder
24. oktober 2003 - 09:19 #11
Du skal ligge din kode i en dot-fil og ligge dot-filen i startup biblioteket på brugernes computere. På den måde ligger din kode kun et sted og du skal derfor ikke vedligeholde 300 dot-filer, men kun 1.
Avatar billede rvm Nybegynder
24. oktober 2003 - 09:21 #12
Det eneste der så skal ligge i de 300 skabeloner, er kaldet til din makro i den nye dot-fil (jeg kalder den ofte for Kodebibliotek.dot *S*)
Avatar billede dimle Nybegynder
24. oktober 2003 - 09:22 #13
Ja, men er det så simpelt?? Hvordan får man så alle de .dot filer som skal bruge den ene .dot-fil til det? Den må heller ikke gøre det i alle dokumenter som åbnes i word nemlig.
Avatar billede rvm Nybegynder
24. oktober 2003 - 09:23 #14
Se forøvrigt dette nyhedbrev, hvor jeg har beskrevet processen *S*

http://www.csc-training.dk/nyheder/nyhedsbrev_08.asp#løsningen
Avatar billede rvm Nybegynder
24. oktober 2003 - 09:24 #15
Kode til at køre andre koder:

Application.run "Navnet på din kode i kodebiblioteket"
Avatar billede dimle Nybegynder
24. oktober 2003 - 09:25 #16
Okay.. men stadig hvordan får man fortalt de 300 .dot-fil at de skla bruge den ene .dot-fil hvor koden ligger i?? Skriver man en sti til den fil eller??
Avatar billede rvm Nybegynder
24. oktober 2003 - 09:26 #17
Indsættet i ThisDocument, hvor du i dag har placeret al den anden kode
Avatar billede rvm Nybegynder
24. oktober 2003 - 09:28 #18
Når du har placeret Kodebibliotke.dot i brugerenes StartUp bibliotek, vil filen blive åbnet som et tilføjelsesprogram, når Word åbnes, og du har derfor altid adgang til dine makroer, når Word er åben.
Avatar billede dimle Nybegynder
24. oktober 2003 - 09:30 #19
Okay... den artikkel/nyhedsbrev du lige har skrevet beskriver jo præcis mit problem! Pussigt.. :o)
Avatar billede rvm Nybegynder
24. oktober 2003 - 09:35 #20
:o)
Avatar billede dimle Nybegynder
24. oktober 2003 - 09:36 #21
Jeg kan jo se at det lige er dig jeg skal have fat i.

Jeg er ikke helt sikekr på selve princippet i denne stuktur endnu og hvor de forskellige ting skal ligge - er det noget du kan hjælpe med?
Avatar billede rvm Nybegynder
24. oktober 2003 - 09:38 #22
Selvfølgelig *S*
Avatar billede rvm Nybegynder
24. oktober 2003 - 09:41 #23
Jeg sender dig et eksempel om et øjeblik - skal lige gøre det klar *S* Du får den store forkromede løsning med kodebibliotek, skabelon og standartekster.
Avatar billede dimle Nybegynder
24. oktober 2003 - 09:42 #24
Alletiders... nu prøver jeg lige at lave den fil du kalder kodebibliotek. Her ligger jeg så selve koden som henter fra notesdatabasen og opdaterer bogmærkerne i de .dot dokumenter som anvender den.
Avatar billede dimle Nybegynder
24. oktober 2003 - 09:47 #25
Okay... det lyder godt. :o)

Dvs. jeg skal altså heller ingen tekst have ude i dokumentet på den .dot-fil der hedder kodebibliotek?!?
Avatar billede rvm Nybegynder
24. oktober 2003 - 09:59 #26
Nej - det skal du ikke.
Avatar billede dimle Nybegynder
24. oktober 2003 - 10:05 #27
Jeg kan se man godt kan lave STARTUP mappen om men er det klogt at gøre, eller er det ligemeget? Det er for at slippe for at alle brugere skal have kopieret kodebib ind på c, så kan de jo lige så godt hente den fra en server!?
Avatar billede rvm Nybegynder
24. oktober 2003 - 10:23 #28
Hvis du har massere netværksplads (her mener jeg hastighed), så kan du bare lave en mappe på netværket og så lave brugernes StartUp sti om til denne mappe - men så kan de ikke arbejde med systemet offline (men det kan de sikkert heller ikke alligevel, når du hente indfomationer fra Notes)
Avatar billede rvm Nybegynder
24. oktober 2003 - 10:29 #29
Men... jeg vil anbefale dig at lave en produktionsmappe og en testmappe, da du ikke kan ændre i kodebibliotek.dot, hvis en bruger har den åben (d.v.s. Word åben)
Avatar billede dimle Nybegynder
24. oktober 2003 - 11:03 #30
Det virker jo simpelthen bare som det skal - alletiders. Så mangler jeg sådanset bare den infomation om det jeg enegtligt spurgte om i starten.

Hvis jeg skal lave den her messagebox, så opretter jeg et formularfelt som kører en makro - er det ikke rigtigt forstået??
Avatar billede dimle Nybegynder
24. oktober 2003 - 11:04 #31
Kan man så sende en parameter med over til den makro som laver msgbox'en om hvad der skal stå i boksen, så jeg ikke skal til at oprette en makro til hver messagebox?
Avatar billede rvm Nybegynder
24. oktober 2003 - 11:12 #32
Jep - du skal bruge navnet på formularfeltet (det er egenskaben bogmærke) - her er koden til det:

'Finder det aktive formularfelts bogmærke
If Selection.FormFields.Count = 1 Then
  'No textbox but a check- or listbox
  svar = Selection.Bookmarks(Selection.Bookmarks.Count).Name
ElseIf Selection.FormFields.Count = 0 And Selection.Bookmarks.Count > 0 Then
    svar = Selection.Bookmarks(Selection.Bookmarks.Count).Name
End If

Du kan så lave en Case select, hvor du spørger på "svar"
Avatar billede rvm Nybegynder
30. oktober 2003 - 11:23 #33
Hvordan går det med opgaven *S* ?
Avatar billede dimle Nybegynder
30. oktober 2003 - 13:38 #34
Det kører - du får lige dine point, men skal også lige høre...

Jeg har et sted hvor jeg får opdateret et bogmærke vha. den kode jeg har skrevet i VB. Lidt længere nede har jeg så indsat en reference til det bogmærke { REF bogmærke }.

Men referencen bliver ikke opdateret!?!? Der skal jeg ned og stille mig i på referencen og trykke F9, så opdaterer den. Jeg kan jeg få den til at gøre det automatisk??
Avatar billede rvm Nybegynder
30. oktober 2003 - 13:44 #35
Det kan ikke ske automatisk, men...

Du kan lave en kode der gør der:

Selection.WholeStory
Selection.Fields.Update
Avatar billede dimle Nybegynder
30. oktober 2003 - 13:55 #36
Ja det virker også sådan da... men på den måde skal man igennem alle filin-felterne igen, for dem vil den også have opdateret... tror du man bare kan opdatere REF felterne???
Avatar billede rvm Nybegynder
30. oktober 2003 - 14:00 #37
Prøv denne som jeg lige har klipet fra et af mine projekter (men jeg anbefaler altså ikke brugen af Fill-in felter *S*):

For n = 1 To ActiveDocument.Fields.Count
    TypeFelt = ActiveDocument.Fields.Item(n).Type

    'Kun referancefelter
    If TypeFelt = "3" Then
        ActiveDocument.Fields.Item(n).Update
    End If
Next
Avatar billede dimle Nybegynder
30. oktober 2003 - 14:35 #38
Nej, men de vil gerne have sådan nogle popupfelter, så det er vist nemmest på den måde.

Det virker - med den kode. Mange tak for hjælpen!!!
Avatar billede rvm Nybegynder
30. oktober 2003 - 14:38 #39
:-))
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