UserForm gegevens onthouden

Status
Niet open voor verdere reacties.

WRD Frank

Gebruiker
Lid geworden
29 nov 2006
Berichten
43
Ik ben druk bezig geweest met het zoeken en aanpassen van de betreffende VBA-codes voor het maken van een userform in Word.
Het resultaat ben ik bijna blij mee. het enige onderdeel dat ik nog mis betreft het weergeven van de reeds aanwezige informatie in het document.

bijvoorbeeld:
tekstvlak 1: "probleem"
tesktvlak 2: "waar"

Nu ga ik het document later hergebruiken. moet moet alleen tekstvlak 2 worden aangepast.
op dit moment worden alle cellen bij het opnieuw openen leeg gemaakt en moet alles weer worden ingetypt.

Voorkeur gaat er naar uit dat de tekstvlakken de aanwezige informatie in het word bestand weergeven.
Wie weet de oplossing?

Code:
Option Explicit
Private oVars As Variables

Private Sub UserForm_Initialize()
Me.Caption = "UserForm1"
Me.Label1.Caption = "Probleem"
Me.Label2.Caption = "Straat"
Me.Label3.Caption = "Plaats"
Me.CommandButton1.Caption = "OK"
Me.CommandButton2.Caption = "Cancel"
End Sub
Private Sub CommandButton1_Click()
'Define the variable oVars
Set oVars = ActiveDocument.Variables
'Hide the userform
Me.Hide
'Assign the values of the three text boxes to the three variables
oVars("Probleem").Value = Me.TextBox1.Value
oVars("Straat").Value = Me.TextBox2.Value
oVars("Plaats").Value = Me.TextBox3.Value
'Update the fields in the body of the document
ActiveDocument.Fields.Update
'Clear the variable
Set oVars = Nothing
'Unload the form
Unload Me
End Sub
Private Sub CommandButton2_Click()
'User has cancelled so unload the form
Unload Me
End Sub
 
De meeste dingen die jij in de initialize-gebeurtenis zet kun je beter als standaardeigenschappen in het ontwerp zetten.
Het gebruiik van Me. is overbodig.

Plaats je document liever, dat praat een stuk eenvoudiger.

De gemakkelijkste manier om gegevens in een Worddocument te bewaren is het gebruik van documentvariabelen.
 
snb,

hierbij het documentje.
Mijn kennis met VBA is vooral gebaseerd op de informatie die ik op internet vind. Daardoor zullen er mogelijk dingen staan die misschien overbodig zijn. (oeps)

ik heb het docx bestand geupload. de docm accepteerde hij niet....

Bekijk bijlage basis.docx
 
Je kunt de naam van je .docm gewoon veranderen naar docx; dan zetten wij hem wel weer terug. Is er een reden dat je je specifiek tot snb richt, of mag iedereen meekijken? :D
 
@Octa

Kwisnie dat jij je daardoor zou laten afschrikken... ;)

@WRD

Omdat het om een userform gaat is een docm bestand (eventueel vermomd zoals @Octa aangeeft) noodzakelijk.
 
Geen probleem. Daarom heb ik hem ook even opgeslagen als een docx bestand......

@Octa - tuurlijk is het voor iedereen om mee te lezen... ;p
 
@snb: ik heb een gevoelige imborst :)
Geen probleem. Daarom heb ik hem ook even opgeslagen als een docx bestand......
Dát is nu net het probleem: nu zijn het formulier en de macro's weg. Je moet je docm hernoemen naar docx, niet opslaan als.
 
@octa

kzal voortaan wat voorzichtiger zijn, t'is wat met die Rotterdammers...
 
Deze code in het userform is voldoende:

Code:
Private Sub CommandButton1_Click()
  With ThisDocument
    .Variables("Probleem") = TextBox1.Value
    .Variables("Straat") = TextBox2.Value
    .Variables("Plaats").Value = TextBox3.Value
    .Fields.Update
  End With
  
  Unload Me
End Sub

Private Sub CommandButton2_Click()
  Unload Me
End Sub

Zet dit in de codemodule van thisdocument:

Code:
Private Sub Document_Open()
    UserForm1.Show
End Sub

Verwijder codemodule1.
 
Laatst bewerkt:
kzal voortaan wat voorzichtiger zijn, t'is wat met die Rotterdammers...
Geef ons een kampioenschap, en ik heb weer wat meer weerstand :).
 
Deze code in het userform is voldoende:
........

Bedankt voor de code.
Alleen bij het opslaan gaat er nu iets mis.
Hij wil het document niet meer als een *.docm opslaan. Alleen nog maar als een docx. Nadeel is dat ik dan direct de marco codes kwijt ben.
 
Hij wil het document niet meer als een *.docm opslaan. Alleen nog maar als een docx.

Wie is 'hij' ?
Kijk nog eens goed, want wat je schrijft is apert onjuist.
 
Sorry.....

zodra ik de variabele invul kan het document niet worden opgeslagen.
Ik wil namelijk graag het bestand als *.docm opslaan. dan kan ik het bestand later nog een keer openen en eventueel aanpassen.
Incidenteel kon het bestand wel worden opgeslagen (klinkt vreemd, maar dat vind ik ook)

De enkele keer dat het bestand wordt opgeslagen, zijn de ingevulde vakken in de userform weer leeg.




OPGELOST (denk ik)
Want nu lukte het opslaan 5 maal achter elkaar
 
Laatst bewerkt:
Het enige onderdeel dat ik nog mis en waar ik vooral opzoek naar was betreft de informatie in de tekstboxen.
Wanneer deze in het verleden zijn ingevuld moeten deze ook te zien zijn bij openen.

In onderstaande bestand zijn de docvariable ingevuld. Alleen als ik het document open, dan staan die gegevens in het userform.

hopelijk beetje duidelijk.

Bij "Type rapport" in userform moet de in het document aangegeven "test" te zien zijn.

Bekijk bijlage basis - rapport wijziging.docx
 
daarvoor gebruik je in het userform:

Code:
Private Sub Userform_Initialize()
  With ThisDocument
    TextBox1.Value =.Variables("Probleem")
    TextBox2.Value=.Variables("Straat")
    TextBox2.Value=.Variables("Plaats")
  End With
End Sub
 
Helaas.....
met frisse moet ben ik weer begonnen met de "Userform".
Alleen wanneer ik de Private Sub Userform_Initialize() bijwerk naar het gene wat ik nodig heb, krijg ik bij start van het Word bestand een foutmelding.
Zodra ik de laatste TextBox2.Value=.Variables("Plaats") wijzig naar TextBox3 geeft hij de foutmelding.
Daarvoor loopt alles op rolletjes
 
Klein feestje.....

ik kwam hier op het forum de volgende tegen:

Code:
Private Sub UserForm_Initialize()
   TextBox1.Text = ActiveDocument.Variables("Projectnummer")
   TextBox2.Text = ActiveDocument.Variables("Rapportnummer")
   TextBox3.Text = ActiveDocument.Variables("Status")
   TextBox4.Text = ActiveDocument.Variables("Datum")
   TextBox5.Text = ActiveDocument.Variables("Gewijzigdedatum")
            
End Sub

(schijnbaar heel simpel)
 
Hetzelfde anders geschreven:

Code:
Private Sub UserForm_Initialize()
   for j=1 to 5
      Me("TextBox" & j).Text = ActiveDocument.Variables(choose(j,"Projectnummer","Rapportnummer","Status","Datum","Gewijzigdedatum"))
   next      
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan