Bookmark automatisch overschrijven door TextBox dmv UserForm in VBA (Word 2016)

Status
Niet open voor verdere reacties.

RiesKoen

Nieuwe gebruiker
Lid geworden
5 apr 2017
Berichten
3
Hi All,

Nieuw hier en hoop de kenner te vinden die mij verder wil helpen.

Ik heb een UserForm gemaakt waarbij je in de TextBox iets invult dat bij een Bookmark in een Word (2016) bestand wordt gezet.
Een gedeelte ziet er zo uit (en hehaalt zicht voor elke TextBox en Bookmark):
Private Sub CommandButton1_Click()
Dim LocatieNaam As Range
Set LocatieNaam = ActiveDocument.Bookmarks("LocatieNaam").Range
LocatieNaam.Text = Me.TextBox1.Value
Me.Repaint
UserForm1.Hide
End Sub


De UserForm opent telkens als je de file opent.

Wat ik graag als Objectcode in het UserForm wil toevoegen zijn 2 dingen:
- Telkens als je het Word bestand opnieuw opent staat de eerder ingevulde tekst weer in de TextBox (die je dan desgewenst kunt wijzigen en opnieuw opslaan).
- Als je iets anders invult in de TextBox dan dat je een keer eerder hebt gedaan overschrijf je het eerder ingevulde met het laatst ingevulde (zoals de UserForm nu is komt al het ingevulde achterelkaar bij de Bookmark in het Word bestand te staan namelijk).

Alvast dank voor jullie reactie en moeite mij te helpen.
Word zeer gewaardeerd!

In de bijlage mijn gehele UserForm.
KnipselVBA.JPG
Mvg
Ries
 
Waarom werk je met Bookmarks en niet met DocVariables? Is veel flexibeler en beter te controleren.
En welkom bij HelpMij :)
 
Hi OctaFish,
DocVariables ken ik eerlijk gezegd niet. Zoals mijn UserForm er nu uitziet begrijp ik nog net ;)
Heb je een suggestie hoe zelfs ik dat kan maken met DocVariables?
Mvg
 
Als jij je bestand plaatst is het voor ons minder werk je vraag te beantwoorden.
 
Heb nu een ombouw gemaakt naar DocVariables m.b.v. eerdere post van OctaFish.
Echter krijg ik eerder ingevulde info nog niet in de UserForm zichtbaar.
Mijn huidige invoer is:


Private Sub UserForm_Initialize()
Dim docVar As Variable

For Each docVar In ActiveDocument.Variables
If Left(docVar.Name, 3) = "txt" Then
On Error GoTo Foutje
Me(docVar.Name).Text = docVar.Value
ElseIf Left(docVar.Name, 3) = "chk" Then
Me(docVar.Name).Value = CInt(docVar.Value)
End If
Next
Exit Sub

Foutje:
Debug.Print docVar.Name & vbLf & docVar.Value
ActiveDocument.Variables(docVar.Name).Delete
Resume Next
End Sub

Private Sub CommandButton1_Click()
Dim ct As Control

For Each ct In Controls
If TypeName(ct) = "TextBox" Then ActiveDocument.Variables(ct.Name) = IIf(ct.Text = "", " ", ct.Text)
Next

With ActiveDocument
.Fields(ActiveDocument.Fields.Count).Locked = True
UpdateFields
.Fields(ActiveDocument.Fields.Count).Locked = False
End With
Unload Me

End Sub

Function UpdateFields()
Dim doc As Document
Dim sRange As Range
Dim sField As Field

Set doc = ActiveDocument
For Each sRange In doc.StoryRanges
For Each sField In sRange.Fields
sField.Update
Next sField
Next sRange

End Function

Private Sub CommandButton2_Click()
Unload Me
End Sub
 
Twee dingen: maak je code op met de CODE knop, en post je documentje. Dat werkt in beide gevallen een stuk jofeler voor ons.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan