Avatar billede LS-Falster Juniormester
23. maj 2013 - 12:51 Der er 4 kommentarer og
1 løsning

Problemer med at afspille makro, når jeg indsætter feltet MacroButton

Jeg har været vant til at arbejde med Word 2003, hvor der var mulighed for at afspille en makro enten ved indgang eller udgang af et tekstfelt.

I Word 2010 kan jeg ikke finde den tilsvarende funktion. Jeg har prøvet mig lidt frem med at indsætte feltet MacroButton (under hurtige dele), men jeg kan ikke få makroen til at virke.

Makroen, som Lene Fredborg har været så venlig at lave til et tekstfelt, ser således ud:

Sub SletTomtFelt1()

  Dim f As FormField
  Set f = ActiveDocument.FormFields("Text1")
      If f.Result = "-" Then
        'fjern beskyttelse
        UnprotectForFormFields ActiveDocument
        f.Range.Paragraphs(1).Range.Delete
        'beskyt igen
        ProtectForFormFields ActiveDocument
      End If

End Sub

Function ProtectForFormFields(oDoc As Document)
    'Slå beskyttelse som formular TIL:

    With oDoc
        If .ProtectionType <> wdAllowOnlyFormFields Then
            .Protect Password:="", NoReset:=True, Type:=wdAllowOnlyFormFields
        End If
    End With
End Function

Function UnprotectForFormFields(oDoc As Document)
    'Slå beskyttelse som formular FRA:

    With oDoc
        If .ProtectionType <> wdNoProtection Then
            .Unprotect Password:=""
        End If
    End With
End Function

Jeg ved ikke, hvordan koden skal se ud, for at det virker, når man indsætter feltet MacroButton, men håber på jeres hjælp
Avatar billede Lene Fredborg Ekspert
23. maj 2013 - 15:25 #1
Marker det formularfelt, du vil ændre egenskaberne for (f.eks. tilknytte en makro som i dette tilfælde). På fanen Udvikler, klik på kommandoen Egenskaber (Properties) i 3. gruppe. Den åbner dialogboksen kendt fra tidligere versioner. Du kan altid åbne dialogboksen ved at dobbeltklikke på et formularfelt i en ubeskyttet formular.

Der er ikke noget i vejen for at bruge et MacroButton-felt i en formular. Du har ikke vist, hvordan din feltkode ser ud. Hvis koden i makroen  SletTomtFelt1 skal køre, vil feltkoden se f.eks. sådan ud (tast Ctrl+F9 for at lave feltklammerne):

{ MacroButton SletTomtFelt1 Dobbeltklik her for at slette tomt felt }

dvs. 1) felttype 2) makronavn 3) teksten, der skal vises i feltet.
Avatar billede LS-Falster Juniormester
24. maj 2013 - 12:36 #2
Feltkoden ser således ud:
{ MacroButton SletTomtFelt1 mail }

Når jeg så skriver et minus i feltet og springer til det næste felt, plejer makroen automatisk at slette tekstfeltet (når jeg bruger de gamle tekstfelter), men det sker så bare ikke, når jeg bruger MacroButton-feltet.
Men jeg har jo heller ikke defineret bogmærket (text1). Jeg kan ikke lige se, hvor det skal gøres.
Er det korrekt, at man kun kan springe mellem felter vha. F11? Jeg låser som udgangspunkt altid mine dokumenter, så folk ikke kan rette utilsigtet, men når jeg gør dette i et dokument med MacroButton, får jeg slet ikke mulighed for at skrive i feltet.
Avatar billede Lene Fredborg Ekspert
24. maj 2013 - 13:25 #3
Det var ikke klart for mig fra din første post, hvad du præcis ville bruge MacroButton-feltet til. Det er ikke et formularfelt og kan ikke på nogen måde bruges som et formularfelt - en makro, der opererer med FormFields, gør ikke noget med andre felttyper end formularfelter. FormFields er specielle. Hvis der er meningen, at brugeren skal skrive på stedet, så brug at formularfelt, hvis det er en beskyttet formular. Alternativt kan du opdele dokumentet i sektioner og undlade at beskytte en eller flere sektioner. De ubeskyttede sektioner kan man skrive i.

F11 er den indbyggede standardgenvej til at gå til næste felt (alle slags felter) - men det gælder ikke i en beskyttet formular. Du kan bruge Tab til af gå fra et formularfelt til et andet i en beskyttet formular. Du kan tilknytte andre tastaturgenveje, hvis der er relevant.

Nu kender jeg jo ikke dine dokumenters indhold, selv om jeg over tid har svaret på en del af dine spørgsmål. En beskyttet formular sætter en masse begrænsninger på, hvad der er muligt i et dokument, også selv om en eller flere sektioner er ubeskyttede. I almindelighed ville jeg selv kun bruge en beskyttet formular, hvis det virkelig drejer sig om en formular (der kan være undtagelser). Ellers bliver det let en klods om benet i stedet og til irritation for brugerne.
Avatar billede LS-Falster Juniormester
28. maj 2013 - 13:21 #4
Hej Lene

Tak for din tilbagemelding. Er det korrekt forstået, at man kun kan tilknytte en makro til de formularfelter(tekstfelter), som ligger under Ældre funktioner? Jeg ser ikke den mulighed, når jeg vælger et kontrolelement.

Vores nye ESDH-system kan ikke håndtere dokumenter, hvor der indgår gamle tekstfelter. Dokumentet viser slet ikke indtastningfelterne. De er i stedet blevet omdannet til almindelig tekst. Derfor søger jeg efter et alternativ.

Tak for hjælpen (som altid).

Du må gerne sende et svar, så du kan få dine point.
Avatar billede Lene Fredborg Ekspert
28. maj 2013 - 14:30 #5
Med kontrolelementer (content controls) kan du ikke tilknytte makroer på samme måde som ved formularfelter, men du kan benytte events til at køre makroer. Se f.eks. afsnittet "Content Control Events" i denne artikel:

http://msdn.microsoft.com/en-us/library/office/ff836891.aspx

Mht. ESDH-systemet: det lyder ikke godt, at systemet ændrer på dokumenter. Kan det ikke tænkes, at der er indstilling(er) i systemet, som kan ændres? Hvis formularfelter omdannet til alm. tekst, kunne man forestille sig, at også andre felttyper omdannes, og det kan jo være ret kritisk.
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