/ Forside / Teknologi / Administrative / MS-Office / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
MS-Office
#NavnPoint
sion 18709
refi 14474
Klaudi 9389
Rosco40 5695
berpox 5456
dk 5398
webnoob 4919
Benjamin... 4870
o.v.n. 4637
10  EXTERMINA.. 4373
Makro i Word
Fra : KN


Dato : 30-08-01 14:49

Hej

Opgave:
I en brevmaske skal der indsættes navn, titel og e-mail på brugeren.
Brevmaskerne er på forskellige sprog. Navn og e-mail er jo sproguafhængige,
og kan indsættes fra brugeroplysninger. Mit problem er titlen.

Ide:
Kan man i en makro tilknyttet masken vedligeholde en liste eller en matrix
(evt. variabler), hvor man så kan indsætte den korrekte titel i masken?

....eller findes der en helt tredje måde at gøre det på?

mvh Kim



 
 
Leo Heuser (03-09-2001)
Kommentar
Fra : Leo Heuser


Dato : 03-09-01 10:13

Hej Kim

Her følger et roman-forslag til, hvordan problemet kan løses,
hvis jeg da har forstået det rigtigt. Hvis du ikke kan få det til
at "funge", er du velkommen tilbage (det er du også, hvis du
*kan* få det til at virke

1. Åbn Brevmaske.dot (eller hvad den nu hedder)
2. Placér markøren, hvor titlen skal stå.
3. Indtast følgende felter: { } indsættes med <Ctrl><F9>
{ macrobutton CallTitleBox { docvariable Title } }
4. Gå til en tom linie i masken og skriv de forskellige titler,
én titel pr linie (afsnit)
5. Markér alle titlerne, sorter dem evt. og vælg Funktioner >
Autokorrektur og fanen "Autotekst"
6. I boksen "Søg i:" vælger du Brevmaske.dot
7. I boksen "Skriv autoteksten her:" skrives "tc" (TitleContainer) uden
gåseøjne. (alt mulig andet kan selvfølgelig også bruges)
8. Klik "Tilføj"
9. Slet alle linierne med titler.
10. Gå til VBA editoren med <Alt><F11>
11. Klik på "Brevmaske " i projektvinduet og vælg Insert > Userform.
12. Fremstil en userform, der indeholder 1 listboks og 1 kommandoknap.
13. Indsæt følgende kode i userformens kodeark (dobbeltklik på
userformen)

-----------------------

Private Sub CommandButton1_Click()
SetTitle ListBox1.Value
Unload Me
End Sub

Private Sub UserForm_Initialize()
'leo.heuser@get2net.dk, 3. september 2001
Dim TitleString As String
Dim SaveCR As Long
Dim CR As Long

On Error GoTo Finito
TitleString = _
ActiveDocument.AttachedTemplate.AutoTextEntries("tc")

SaveCR = 1
CR = InStr(TitleString, vbCr)

ListBox1.Clear

Do While CR
ListBox1.AddItem Mid(TitleString, SaveCR, CR - SaveCR)
SaveCR = CR + 1
CR = InStr(SaveCR, TitleString, vbCr)
Loop

With ListBox1
.ListIndex = 0
.SetFocus
End With

Finito:
End Sub

--------------------------

14. Vælg Insert > Module og indsæt følgende kode i
modulets kodevindue:

-----------------

Sub SetTitle(Title)

On Error Resume Next
With ActiveDocument
.Variables.Add Name:="Title"
.Variables("Title").Value = Title
.Fields.Update
End With

End Sub

Sub CallTitleBox()
UserForm1.Show
End Sub

------------------

15. Gå tilbage til dokumentet med <Alt><F11>
16. Skjul felter med <Alt><F9> (her skal det gøres 2 gange)
17. Dobbeltklik, hvor titlen skal stå.
18. Vælg en tilfældig titel fra userformen.
19. Gem skabelonen med rettelser og luk den.

Du er nu klar til at bruge brevmasken.
Opret et brev, dobbeltklik på den titel, der står, og vælg den korrekte.

Når der skal rettes/tilføjes/slettes titler foregår det således:

A. Opret et nyt brev (eller åbn Brevmaske.dot)
B. På en tom linie skrives "tc" uden gåseøjne, og du trykker <F3>
C. Ret/tilføj/slet i listen, sortér den evt. og gentag punkt 5 og 6.
D. Markér "tc" og tryk "Tilføj" og svar "Ja" til at omdefinere
autoteksten.
E. Luk dokumentet og svar "Ja", når der spørges "Skal ændringer
i Brevmaske.dot gemmes?"

Sådan!

--
Med venlig hilsen
LeoH
Excel MVP



"KN" <kn@frrasch.dk> skrev i en meddelelse
news:Evrj7.20783$3q.704159@news010.worldonline.dk...
> Hej
>
> Opgave:
> I en brevmaske skal der indsættes navn, titel og e-mail på brugeren.
> Brevmaskerne er på forskellige sprog. Navn og e-mail er jo
sproguafhængige,
> og kan indsættes fra brugeroplysninger. Mit problem er titlen.
>
> Ide:
> Kan man i en makro tilknyttet masken vedligeholde en liste eller en matrix
> (evt. variabler), hvor man så kan indsætte den korrekte titel i masken?
>
> ...eller findes der en helt tredje måde at gøre det på?
>
> mvh Kim
>
>









Leo Heuser (09-09-2001)
Kommentar
Fra : Leo Heuser


Dato : 09-09-01 12:45

Hvis der er nogen, der har eksperimenteret lidt med min
"løsning", er her lidt "nedkøling".
Det har desværre vist sig, at når man som anført overfører en
autotekst (eller en autokorrektur) *til en variabel*,
medtages kun de første 255 tegn

> TitleString = _
> ActiveDocument.AttachedTemplate.AutoTextEntries("tc")

Så man er i stedet nødt til fra koden at indsætte autoteksten i
dokumentet og derfra indsætte den i variablen og til sidst slette
den indsatte autotekst fra dokumentet.

Her er lidt kode til almindelig adspredelse

Selection.Collapse
StartPos = Selection.Start
ActiveDocument.AttachedTemplate.AutoTextEntries(NameOfAutotext).Insert _
where:=Selection.Range
EndPos = Selection.Start

ActiveDocument.Range(Start:=StartPos, End:=EndPos).Select

TitleString = Selection.Range
Selection.Delete

Med venlig hilsen
LeoH





Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408929
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste