[VBA] vraag word

Status
Niet open voor verdere reacties.

boswottels

Gebruiker
Lid geworden
17 feb 2010
Berichten
49
Ik heb een worddocument gemaakt met daarop bladwijzers. Hierin vul ik de tekst in dmv een form die ik heb gemaakt, die ziet er zo uit;

Private Sub Confirm_Click()

ActiveDocument.Bookmarks("naam").Range.Text = TextBox1.Text
ActiveDocument.Bookmarks("Straat_nr").Range.Text = TextBox2.Text
ActiveDocument.Bookmarks("Postc_woonpl").Range.Text = TextBox3.Text
ActiveDocument.Bookmarks("VIHB_nummer").Range.Text = TextBox4.Text
ActiveDocument.Bookmarks("Bedrijfsnummer").Range.Text = TextBox5.Text

End Sub

Vraag 1 Alleen, nu blijft de tekst staan als ik op confirm druk en opnieuw wil invullen. Hoe leeg ik mijn bladwijzers in word?

Dit heb ik al geprobeert:
ActiveDocument.Bookmarks("naam").Empty

Vraag2 Hoe kan ik dit zelfde bij een checkbox uit voeren?
ik dacht zelf zo( maar niet dus) ;


If CheckBox5 = True Then

ActiveDocument.Bookmarks("cb1").Range.Text = "x"

Else
ActiveDocument.Bookmarks("cb1").Empty

End If

Vraag 3 Hoe gaat mijn form weg nadat ik op een knop heb gedrukt?

Alvast bedankt!!!

gr, Michiel
 
Laatst bewerkt:
Antwoord 1:
ActiveDocument.Bookmarks("naam").range.text = empty
of
ActiveDocument.Bookmarks("naam").range.text = ""

Antwoord 2: ActiveDocument.FormFields("Check1").CheckBox.Value = False
Antwoord 3: FormName.Hide
 
Gebruik hiervoor documentvariabelen (menubalk/invoegen/veld/Docvariable..)
Code:
Private Sub Confirm_Click()
  For j = 1 to 5
     ActiveDocument.Variables(choose(j,"naam","Straat_nr","Postc_woonpl","VIHB_nummer","Bedrijfsnummer")) = Me("TextBox" & j).Text
  Next
End Sub
Deze kun je zo vaak als je wil in een document, koptekst, voettekst, tekstvak invoeren en afzonderlijk opmaken.

Kijk ook eens hier
 
Laatst bewerkt:
bedankt voor jullie snelle reactie

snb dien je dan niet die J op te hogen? bijv. J++?

want op die manier werkt het niet zoals jij het zegt.

en uh, je link is voor excel + als ik op toon userform druk, loopt mijn excel vast hier op mijn werk

Nire
als ik dit doe:

Antwoord 1:
ActiveDocument.Bookmarks("naam").range.text = empty ( dit is een property en dat werkt niet)
of
ActiveDocument.Bookmarks("naam").range.text = "" ( dit zet er een spatie of niks voor of achter het haalt mijn bladwijzer niet leeg)

Dan komt de tekst vooraan bij de tekst die ik daarvoor heb ik gevult.
Ik heb naam; piet jan klaassen, voer ik het nog een keer uit. Dan wordt het er gewoon voor geplakt.

en bij FormName.hide verwacht hij een parameter (), en als ik die meegeef heeft ie er geen zin meer in
 
Laatst bewerkt:
Ik heb hier een soortgelijk form draaien, maar ik hoef geen parameter op te geven bij Hide.

Mijn form heet: ATPR_Form

dus ik gebruik:
ATPR_Form.Hide

en dat werkt.

Welke versie van Word gebruik je?
 
Laatst bewerkt:
word 2003, maar wat jij zei werkt bij mij niet.

In idergeval niet in mn sub.
 
Kijk eens aan wat een mooi stukje code

Code:
Public Sub SetBookmarkContent(sBookmark As String, sVarname As String)
Dim bkRange As Word.Range
On Error GoTo ErrTrap
 
    If ActiveDocument.Bookmarks.Exists(sBookmark) Then
        Set bkRange = ActiveDocument.Bookmarks(sBookmark).Range
        bkRange.Text = sVarname
        ActiveDocument.Bookmarks.Add Name:=sBookmark, Range:=bkRange
    End If
 
    Exit Sub
    
ErrTrap:
    End
End Sub
 
Public Function GoToBookmark(strBookmark As String) As Integer
On Error GoTo ErrTrap
 
    GoToBookmark = True
    ActiveDocument.Bookmarks(strBookmark).Select
    
    Exit Function
    
ErrTrap:
    GoToBookmark = False
    
End Function
 
Ok, ik had een klein foutje gemaakt. Ik had wel de goedenaam, maar mn sub miste iets
 
Ok, nou ik heb mijn vraag tot nu toe zelf opgelost.

Nu heb ik dit( ik weet dat het er een beetje noob uitziet :P )

Private Sub Clear()

TextBox1 = ""
TextBox2 = ""
TextBox3 = ""
TextBox4 = ""
TextBox5 = ""
End Sub

Private Sub UpdateBookmark(BookmarkToUpdate As String, TextToUse As String)

Clear

Dim BMRange As Range
Set BMRange = ActiveDocument.Bookmarks(BookmarkToUpdate).Range
BMRange.Text = TextToUse
ActiveDocument.Bookmarks.Add BookmarkToUpdate, BMRange

End Sub

Private Sub Confirm_CLick()

UpdateBookmark "naam", TextBox1.Text
UpdateBookmark "Straat_nr", TextBox2.Text
UpdateBookmark "Postc_woonpl", TextBox3.Text
UpdateBookmark "VIHB_nummer", TextBox4.Text
UpdateBookmark "Bedrijfsnummer", TextBox5.Text


FormWord.Hide


End Sub
 
:shocked:

Exact hetzelfde staat dus in mijn stukje hierboven. Alleen dan mooi verpakt in een functie.

Het wil wel helpen om een antwoord werkelijk te lezen.
 
Nja, deze is wel iets simpeler.

Toch is t nog best lastig vba. 2 jaar gelede Java scrips gemaakt( op school) en nu VBA uit interesse
 
nog een vraag. nou eigenlijk 2

Hoe kan ik mijn script nalopen of alles is ingevult? en zo niet er een msgbox aanhangen?

ik dacht zoiets van if txtbox1 = 0 then; msgbox.......
elseif txtbox2 = 0 then ,,, etc

en uuh,, hoe geef je een tekstfield de eigenschappen dat deze bijv. 4cijfers + 2 letters MOET hebben( een postcode dus) en dat dat niet anders kan
 
Laatst bewerkt:
Ik heb nu dit


Private Sub Clear()

TextBox1 = ""
TextBox2 = ""
TextBox3 = ""
TextBox4 = ""
TextBox5 = ""
TextBox6 = ""

End Sub

Private Sub UpdateBookmarkStr(BookmarkToUpdate As String, TextToUse As String)



Dim BMRange As Range
Set BMRange = ActiveDocument.Bookmarks(BookmarkToUpdate).Range
BMRange.Text = TextToUse
ActiveDocument.Bookmarks.Add BookmarkToUpdate, BMRange



End Sub


Private Sub Annuleer_Click()

Unload Me

End Sub

Private Sub Confirm_Click()

UpdateBookmarkStr "Ontdoener", TextBox1.Text
UpdateBookmarkStr "Straat_nr3", TextBox2.Text + " " + TextBox3.Text
UpdateBookmarkStr "Postc_woonpl3", TextBox4.Text + " " + TextBox5
UpdateBookmarkStr "Bedrijfsnummer3", TextBox6.Text


Clear


UserForm2.hide


End Sub



Private Sub Volgende_Click()

UpdateBookmarkStr "Ontdoener", TextBox1.Text
UpdateBookmarkStr "Straat_nr3", TextBox2.Text + " " + TextBox3.Text
UpdateBookmarkStr "Postc_woonpl3", TextBox4.Text + " " + TextBox5
UpdateBookmarkStr "Bedrijfsnummer3", TextBox6.Text


Clear


Load UserForm3

UserForm2.hide
UserForm3.Show


End Sub



Alleen, nu wil ik nog wat extra dingen er aan toevoegen.

  1. Naam met hoofdletter beginnen
  2. Ik heb bijv. Straat + nummer, nu wil ik nr een integer maken en straat een string. en ook dat je alleen maar die kan invullen. later worden ze samen gevoed tot een string
  3. Als een checkbox is aangevinkt, dat ergens op een tekst verschijnt in mijn Word doc.
  4. Een drop down menu met een aantal keuzes.
  5. en dat hij pas de button Volgende toont, als alles is ingevuld

Kan iemand mij hierbij op de goede weg helpen? Ik heb al een tijd op internet gezocht, maar er is zooo veel te vinden dat ik door de bomen het bos niet meer ziet.

bedankt, Michiel


 
Begin eens met goed gebruik van dit forum en zet VBA-code tussen code-tags (en controleer ook je Nederlandse grammatica). Praten we daarna verder.
 
Alleen door het woord ziet moet ik mijn gramatica controleren?

Code:
Private Sub Clear()

TextBox1 = ""
TextBox2 = ""
TextBox3 = ""
TextBox4 = ""
TextBox5 = ""
TextBox6 = ""
End Sub

Private Sub UpdateBookmarkStr(BookmarkToUpdate As String, TextToUse As String)



Dim BMRange As Range
Set BMRange = ActiveDocument.Bookmarks(BookmarkToUpdate).Range
BMRange.Text = TextToUse
ActiveDocument.Bookmarks.Add BookmarkToUpdate, BMRange



End Sub


Private Sub CommandButton1_Click()

   Unload Me

End Sub

Private Sub CommandButton2_Click()
Load UserForm

UserForm1.hide
UserForm.Show


End Sub

Private Sub Confirm_Click()

UpdateBookmarkStr "naam", TextBox1.Text
UpdateBookmarkStr "Straat_nr", TextBox2.Text + "  " + TextBox6.Text
UpdateBookmarkStr "Postc_woonpl", TextBox3.Text
UpdateBookmarkStr "VIHB_nummer", TextBox4.Text
UpdateBookmarkStr "Bedrijfsnummer", TextBox5.Text

'UpdateBookmarkInt "straat_nr", TextBox6.Text'
Clear


UserForm1.hide


End Sub

Private Sub Text1_Keypress(KeyAscii As Integer)
Dim str As String

str = ".0123456789"
If KeyAscii > 26 Then
   If InStr(str, Chr(KeyAscii)) = 0 Then
       KeyAscii = 0
             
       
   End If
End If
End Sub

Private Sub Label1_Click()

End Sub

nu blij?


nu wil ik nog wat extra dingen er aan toevoegen.

  1. Naam met hoofdletter beginnen
  2. Ik heb bijv. Straat + nummer, nu wil ik nr een integer maken en straat een string. en ook dat je alleen maar die kan invullen. later worden ze samen gevoed tot een string
  3. Als een checkbox is aangevinkt, dat ergens op een tekst verschijnt in mijn Word doc.
  4. Een drop down menu met een aantal keuzes.
  5. en dat hij pas de button Volgende toont, als alles is ingevuld
 
Laatst bewerkt:
De goede weg had ik je al gewezen met documentvariabelen; die ben je blijkbaar niet ingeslagen.
 
Gebruik hiervoor documentvariabelen (menubalk/invoegen/veld/Docvariable..)
Code:
Private Sub Confirm_Click()
  For j = 1 to 5
     ActiveDocument.Variables(choose(j,"naam","Straat_nr","Postc_woonpl","VIHB_nummer","Bedrijfsnummer")) = Me("TextBox" & j).Text
  Next
End Sub
Deze kun je zo vaak als je wil in een document, koptekst, voettekst, tekstvak invoeren en afzonderlijk opmaken.

Kijk ook eens hier


Zoals jij dit zei, werkt niet bij mij. Weet wel hoe ik het in Java moet doen. Maar hoe ik dit nou in VBA voor elkaar krijg. Ik zou het niet weten.
 
Je zult wel velden met documentvariabelen in het document moeten zetten.

Gebruik hiervoor documentvariabelen (menubalk/invoegen/veld/Docvariable..)

En het werkt ook bij jou.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan