Via een formulier een bladwijzer invullen

Status
Niet open voor verdere reacties.

McMacro

Gebruiker
Lid geworden
11 dec 2009
Berichten
80
Beste Excellers,

Ik probeer in Word 2007 een formulier te maken die vanuit de TextBoxen de Bladwijzers/Bookmarks invult.
Dit gaat tot nu toe goed. Alleen zou ik graag bij de lengte/opp. van het tracé een optie willen toevoegen of het 'm' of 'm²' wordt (zie code).

Volgens mij kan de code ook korter, maarja ik heb er (nog) niet zo veel kaas van gegeten.

Code:
Private Sub cmdok_Click()

'Alle bladwijzers (eng. bookmarks) worden in het document ingevuld middels een invulformulier

'Titel
    ActiveDocument.Bookmarks("bmstraat1").Select
      Selection.TypeText Me.txtstraat
    ActiveDocument.Bookmarks("bmstraat2").Select
      Selection.TypeText Me.txtstraat
    ActiveDocument.Bookmarks("bmplaats1").Select
      Selection.TypeText Me.txtplaats
    ActiveDocument.Bookmarks("bmplaats2").Select
      Selection.TypeText Me.txtplaats
    ActiveDocument.Bookmarks("bmplaats3").Select
      Selection.TypeText Me.txtplaats
    ActiveDocument.Bookmarks("bmmonsternemer1").Select
      Selection.TypeText Me.txtmonsternemer
    ActiveDocument.Bookmarks("bmdtmmonstername1").Select
      Selection.TypeText Me.txtdtmmonstername
    ActiveDocument.Bookmarks("bmdtmmonstername2").Select
      Selection.TypeText Me.txtdtmmonstername

'Gegevens
    ActiveDocument.Bookmarks("bmgemeente1").Select
      Selection.TypeText Me.txtgemeente
    ActiveDocument.Bookmarks("bmbeschrijver1").Select
      Selection.TypeText Me.txtbeschrijver
    ActiveDocument.Bookmarks("bmlengtetrace1").Select
      Selection.TypeText Me.txtlengtetrace [B][COLOR="#008000"]'& OptionButton 1 of OptionButtun 2 naargelang de keuze die er gemaakt is[/COLOR][/B]
    ActiveDocument.Bookmarks("bmlengtetrace2").Select
      Selection.TypeText Me.txtlengtetrace [B][COLOR="#008000"]'& OptionButton 1 of OptionButtun 2 naargelang de keuze die er gemaakt is[/COLOR][/B]
    ActiveDocument.Bookmarks("bmdtmterreininspectie1").Select
      Selection.TypeText Me.txtdtmterreininspectie
    ActiveDocument.Bookmarks("bmopptrace1").Select
      Selection.TypeText Me.txtopptrace
    ActiveDocument.Bookmarks("bmopptrace2").Select
      Selection.TypeText Me.txtopptrace
    ActiveDocument.Bookmarks("bmhoogteterrein1").Select
      Selection.TypeText Me.txthoogteterrein
    ActiveDocument.Bookmarks("bmhoogteterrein2").Select
      Selection.TypeText Me.txthoogteterrein
    ActiveDocument.Bookmarks("bmhoogtegrondwater1").Select
      Selection.TypeText Me.txthoogtegrondwater

  Unload Me

End Sub

Wie weet er raad mee?
Alvast heel erg bedankt voor de genomen moeite om er naar te kijken.


Met vriendelijke groet,


McMacro
 

Bijlagen

Dat kan al korter met bijv.

Code:
ActiveDocument.Bookmarks("bmstraat1").range = txtstraat.Text

Documentvariabelen hebben echter mijn voorkeur:

Code:
ActiveDocument.Variables("bmstraat1")=txtstraat.Text
 
Laatst bewerkt:
Bedankt snb voor de snelle reactie!

Dit is dan de nieuwe code tot nu toe:

Code:
Private Sub cmdok_Click()

'Alle bladwijzers (eng. bookmarks) worden in het document ingevuld middels een invulformulier

'Titel
    ActiveDocument.Variables("bmstraat1")=txtstraat.Text
    ActiveDocument.Variables("bmstraat2")=txtstraat.Text
    ActiveDocument.Variables("bmplaats1")=txtstraat.Text
    ActiveDocument.Variables("bmplaats2")=txtplaats.Text
    ActiveDocument.Variables("bmplaats3")=txtplaats.Text
    ActiveDocument.Variables("bmmonsternemer")=txtmonsternemer.Text
    ActiveDocument.Variables("bmmonstername1")=txtmonstername.Text
    ActiveDocument.Variables("bmmonstername2")=txtmonstername.Text

'Gegevens
    ActiveDocument.Variables("bmgemeente1")=txtgemeente.Text
    ActiveDocument.Variables("bmbeschrijver1")=txtbeschrijver.Text
    ActiveDocument.Variables("bmlengtetrace1")=txtlengtetrace.Text [COLOR="#008000"][B]'& OptionButton 1 of OptionButtun 2 naargelang de keuze die er gemaakt is[/B][/COLOR]    
    ActiveDocument.Variables("bmlengtetrace2")=txtlengtetrace.Text [COLOR="#008000"][B]'& OptionButton 1 of OptionButtun 2 naargelang de keuze die er gemaakt is[/B][/COLOR]
    ActiveDocument.Variables("bmdtmterreininspectie1")=txtdtmterreininspectie.Text
    ActiveDocument.Variables("bmopptrace1")=txtopptrace.Text
    ActiveDocument.Variables("bmopptrace2")=txtopptrace.Text
    ActiveDocument.Variables("bmhoogteterrein1")=txthoogteterrein1.Text
    ActiveDocument.Variables("bmhoogteterrein2")=txthoogteterrein2.Text
    ActiveDocument.Variables("bmhoogtegrondwater1")=txthoogtegrondwater1.Text

  Unload Me

End Sub

Alleen zit ik nog met het eigenlijke probleem de optie buttons.
Als ik bijvoorbeeld voorafgaand aan de optie buttons in de textbox '50' invul en de keuze 'm²' maak, dan moet in het betreffende tekst gedeelte het resultaat zijn: 50 m².

Met vriendelijke groet,


McMacro
 
Laatst bewerkt:
Het voordeel van documentvariabelen is dat je ze net zo vaak in je document kunt zetten als je wil, in tegenstelling tot bladwijzers, die per definitie uniek zijn.

Dit is daarom overbodig:

Code:
ActiveDocument.Variables("bmstraat1")=txtstraat.Text
    ActiveDocument.Variables("bmstraat2")=txtstraat.Text

dit volstaat

Code:
ActiveDocument.Variables("bmstraat")=txtstraat.Text

Het documentvariabele veld {docvariable bmstraat} kun je op tig plaatsen in je document zetten.
 
Laatst bewerkt:
Beste SNB,

Bedankt voor de reactie. Ik zie dat het formulier niet meegeleverd word in het testdocument dat ik meegeleverd heb.
Op de een of andere manier krijg ik het ook niet meegeleverd. Ik heb het namelijk eerst geëxporteerd en daarna geïmporteerd, omdat ik het mogelijk vaker nodig heb in verschillende sjablonen.
Hierbij wel een png-bestand van het formulier.

Misschien kun je hier nog naar kijken welke code ik nodig heb bij de optionbuttons (zie voor exacte vraag in vorige reacties).

Met vriendelijke groet,



McMacro
 

Bijlagen

  • Formulier.png
    Formulier.png
    22,5 KB · Weergaven: 172
Het is handig om een document met VBA op te slaan als docm !! en dan hier te plaatsen.
 
Nou ik ga het nog een keer proberen (zie bijlage).

Ik denk dat het niet lukte omdat het een document is met ingeschakelde macro's. Nadat ik het gezipd hebt lukte het wel.

Hopelijk zit het formulier er nog aan? Laat maar weten wanneer niet.

Met vriendelijke groet,



McMacro
 

Bijlagen

Hallo Snb,

Hartelijk bedankt. Hoe is het te leren om op deze wijze een stukje VBA in elkaar te steken? Ik weet dat het antwoord veel oefenen veelal gegeven word, maar het ligt ook aan de basis de denkwijze om een code op te bouwen. En dan nu de bekende vraag: is er een boek die deze wijze van codeopbouw behandelt? Vooral in combinatie met formulieren?

Dan nu nog een vraag over dit document:
Ik heb het formulier nog aangepast en de TabIndex correct ingesteld.
Alleen nu heb ik 2 optionbuttons daadwerkelijk toegevoegd. Ik zag dat er iets in m'n standaard formulier veroudert was. Nu dus niet meer. (mogelijk wordt deze wel nog uitgebreid, maar hiermee ben ik al heel erg geholpen).
 

Bijlagen

Hoe te leren ?

Ik denk dat een cursus volgen bij snb het enige antwoord is.
Ik ken geen boeken die het zo behandelen.
 
Laatst bewerkt:
Hallo Snb,

Ik wist niet dat je ook cursussen geeft?
Is het misschien nog gelukt om iets met het laatst toegevoegde zip-bestand te doen?
Het gaat om de optionbuttons. Het formulier is nu helemaal aangepast zoals het zou moeten zijn, alleen de optionbuttons 'm'of 'm²'

Heel erg bedankt als dit nog zou lukken.

Met vriendelijke groet,


McMacro
 
Hierbij nog een aangepast document (zie bijlage).

Er zijn 3 problemen ontstaan, te weten:

1. In het textvak worden de docvariables niet geüpdatet na het invullen van het formulier;
2. In de voetnoot worden de docvariables niet geüpdatet na het invullen van het formulier;
3. De bekende option buttons functioneren nog niet.

Heeft iemand hier misschien een oplossing voor?

Met vriendelijke groet,


McMacro
 

Bijlagen

De velden van een voetnoot bevinden zich in een andere 'storyrange' dan de hoofdtekst. Bestudeer 'storyrange' in de hulpbestanden van de vbEditor.
Kijk eens naar de eigenschappen van een tekstvak (dat in VBA een 'gewone' shape is).
 
Laatst bewerkt:
Hallo Snb,

Ik heb schijnbaar echt geen kaas gegeten van VBA. In de code die je me hebt aangeleverd krijg ik de aanvullende code niet verwerkt.
Volgens mij moet het iets in deze richting komen. Alleen de optionbuttuns zijn dan niet verwerkt in de code, die er wel nog in moeten.
Ik begrijp nu wel dat verschillende bereiken zijn "RangeStory" in Word.

Zou je me op weg willen helpen met het verwerken in de code?

Code:
Private Sub cmdok_Click()

[COLOR="#FF0000"]
Dim stropbm As String

If opbm = True Then stropbm = "m"
If opbm2 = True Then stropbm = "m²"
[/COLOR]

  For Each ct In Controls
     If TypeName(ct) = "TextBox" Then
        ActiveDocument.Variables(ct.Name) = IIf(ct.Text = "", " ", ct.Text)
        [COLOR="#FF0000"]ActiveDocument.StoryRanges(wdTextFrameStory).Variables(ct.Name) = IIf(ct.Text = "", " ", ct.Text)
        ActiveDocument.StoryRanges(wdFootnotesStory).Variables(ct.Name) = IIf(ct.Text = "", " ", ct.Text)[/COLOR]
        
  Next

    ActiveDocument.Fields(ActiveDocument.Fields.Count).Locked = True

    ActiveDocument.Fields.Update
    ActiveWindow.View.ShowFieldCodes = False
    
    ActiveDocument.Fields(ActiveDocument.Fields.Count).Locked = False

  Unload Me

End Sub
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan