Problemen met VBA in Word 2003

Status
Niet open voor verdere reacties.

respawn

Gebruiker
Lid geworden
10 jul 2008
Berichten
8
Beste,

Omdat ik een en ander aan oplossingen veelal van dit forum af heb kunnen halen dacht ik dat het ook het meest praktische was om ook hier een vraag te stellen over VBA.

Ben zelfstandig ondernemer en probeer op deze manier gemakkelijk factuurtjes te draaien...

Hetvolgende doet zich voor:

Heb een met VBA een dialoogvenster in elkaar geknutseld en dit werkt op de een of andere manier niet.. Kan het zijn dat er een fout in de code zit? Wan krijg elke keer een foutmelding met een gele balk waarvan mij onduidelijk is waarom... De code staat er naar mijn weten correct in... :confused:

De code ziet er als volgt uit:

________________________________________________________

Private Sub cmdOK_Click()

ActiveDocument.Bookmarks("bmAannemer").Select
Selection.TypeText Me.txtAannemer

ActiveDocument.Bookmarks("bmContactpersoon").Select
Selection.TypeText Me.txtContactpersoon

ActiveDocument.Bookmarks("bmTelefoon").Select
Selection.TypeText Me.txtTelefoon

ActiveDocument.Bookmarks("bmStraat").Select
Selection.TypeText Me.txtStraat

ActiveDocument.Bookmarks("bmHuisnummer").Select
Selection.TypeText Me.txtHuisnummer

ActiveDocument.Bookmarks("bmPostcode").Select
Selection.TypeText Me.txtPostcode

ActiveDocument.Bookmarks("bmWoonplaats").Select
Selection.TypeText Me.txtWoonplaats

ActiveDocument.Bookmarks("bmUitvoerder").Select
Selection.TypeText Me.txtUitvoerder

ActiveDocument.Bookmarks("bmProjectnummer").Select
Selection.TypeText Me.txtProjectnummer

ActiveDocument.Bookmarks("bmStartdatum").Select
Selection.TypeText Me.txtStartdatum

ActiveDocument.Bookmarks("bmProjectnaam").Select
Selection.TypeText Me.txtProjectnaam

ActiveDocument.Bookmarks("bmProjectlocatie").Select
Selection.TypeText Me.txtProjectlocatie

ActiveDocument.Bookmarks("bmPrijs").Select
Selection.TypeText Me.txtPrijs

Unload Me

End Sub

___________________________________________________
 
Als je vertelt welke regel geel gemarkeerd wordt en welke foutmelding wordt gegeven ?

Je kunt je code ook zo schrijven:
Code:
Private Sub cmdOK_Click()
  sq=split("Aannemer|Contactpersoon|Telefoon|Straat|Huisnummer|Postcode|Woonplaats|Uitvoerder|Projectnummer|Startdatum|Projectnaam|Projectlocatie|Prijs","|")
  for j=0 to ubound(sq)
    ActiveDocument.Bookmarks("bm" & sq(j)).range=Me("txt" & sq(j))
  Next
  Hide
End Sub
 
Als je vertelt welke regel geel gemarkeerd wordt en welke foutmelding wordt gegeven ?

Je kunt je code ook zo schrijven:
Code:
Private Sub cmdOK_Click()
  sq=split("Aannemer|Contactpersoon|Telefoon|Straat|Huisnummer|Postcode|Woonplaats|Uitvoerder|Projectnummer|Startdatum|Projectnaam|Projectlocatie|Prijs","|")
  for j=0 to ubound(sq)
    ActiveDocument.Bookmarks("bm" & sq(j)).range=Me("txt" & sq(j))
  Next
  Hide
End Sub

Bedankt voor je reactie!

Zie bijgevoegde schermprint...

De foutmelding is: Fout 5941 - Het gevraagde lid van de collectie bestaat niet.. Dit is ook als ik jou code gebruik (ActiveDocument.Bookmarks("bm" & sq(j)).Range = Me("txt" & sq(j)))..

Via Google zou deze foutmelding duiden op een leeg document o.i.d., maar het document staat wel degelijk vol met tekst, dit zou trouwens toch ook moeten werken zonder dat ik bladwijzers hoef toe te voegen?

Trouwens, als je aan de linkerkant kijkt van de VBA editor dan is het 1 grote puinhoop, zal dit er iets mee te maken kunnen hebben? Want soms heb ik het idee dat e.e.a. door elkaar heenloopt...

Greetz!
 

Bijlagen

  • frmInvoer_Foutmelding.JPG
    frmInvoer_Foutmelding.JPG
    82,8 KB · Weergaven: 84
Laatst bewerkt:
Gelukkig heb je zelf het antwoord gegeven: er staan geen bladwijzers in het document.
Die kun je er met VBA wel inzetten, maar dan sluit ik niet uity dat ze niet op de plaats staan die jij wil.
Ergo: zet eerst bladwijzers in het document op exact de plaats die jij wil. Zorg ervoor dat ze exact dezelfde naam hebben als in de macro.
Suggestie: maak het jezelf gemakkelijk en voeg aan de tekstvakken geen txt toe, noch aan de bladwijzers "bm".
Dan wordt de macro navenant eenvoudiger:
Code:
Private Sub cmdOK_Click()
  sq=split("Aannemer|Contactpersoon|Telefoon|Straat|Huisnummer|Postcode|Woonplaats|Uitvoerder|Projectnummer|Startdatum|Projectnaam|Projectlocatie|Prijs","|")
  for j=0 to ubound(sq)
    ActiveDocument.Bookmarks(sq(j)).range=Me(sq(j))
  Next
  Hide
End Sub

Wil je het allemaal geavanceeerder aanpakken, dan kan dat met documentvariabelen:
Code:
Private Sub cmdOK_Click()
  sq=split("Aannemer|Contactpersoon|Telefoon|Straat|Huisnummer|Postcode|Woonplaats|Uitvoerder|Projectnummer|Startdatum|Projectnaam|Projectlocatie|Prijs","|")
  for j=0 to ubound(sq)
    ActiveDocument.variables(sq(j))=iif (Me(sq(j))=""," ",Me(sq(j)))
  Next
  Activedocument.fields.update
  Hide
End Sub
Voor of nadat je deze code hebt uitgevoerd kun je in het document zo vaak als je wilt documentvariabelen toevoegen (Menu/inovegen/Veld/docvariable). Zorg er ook hier voor dat de naam van de documentvariabele exact overeenkomt met wat er in de macro staat.
Nadat je de velden hebt invoerd voer je de macro uit.
De velden met documentvariabelen kun je altijd 'bijwerken' met F9.
 
@ SNB

Mag ik jou vriendelijk bedanken? Dat ik het te ingewikkeld zocht blijkt maar weer, zag door de codes niet meer wat waar stond, en op een gegeven moment zie je geen fouten meer door de chaos.. Dit werkt veel fijner en kijkt heel wat gemakkelijker weg... Tnx!

Maar met de nieuwe code werkt mijn optie AutoNew en refresh niet meer :(
Als ik b.v. het goedje als een Sjabloon .DOT opsla en ik zou 'm openen dat ik dan gelijk het dialoogvenster voor me heb, en dat ik niet elke keer CTRL-A + F9 (Voor refresh) hoef in te drukken...

Is het tevens mogelijk om het document wat dan is uitgevoerd automatisch weg te laten schrijven nadat ik op OK heb gedrukt? En hem dan de naam te geven die gelijk is aan het projectnummer die ik heb ingegeven via het VBA dialoogvenster? Klinkt ingewikkeld allemaal, ben dan ook benieuwd of dit mogelijk is...

Knelpunten: :shocked:

- Sjabloon .DOT opent niet automatisch als ik hem open (En zou blanco moeten openen?)
- Refresh optie werkt niet (d.w.z. dat zodra ik een dialoogvenster invul en ok druk er pas iets in beeld verschijnt als ik het gehele document refresh met ALT+A + F9)
- Het automatisch wegschrijven en toekennen van een bestandsnaam (= Projectnummer) in een door mij te definieren locatie op de server van het document
- Het koppelen van het dialoog aan een keuzeveld die een adres op kan roepen vanuit een excel of acces sheet...

Als jij hier de oplossing van weet hoor ik dat graag... :thumb:

Alvast bedankt man!

Greetz! :cool:
 
Laatst bewerkt:
Menu/Extra/opties/algemeen/optie 'automatisch koppelingen bijwerken bij openen' aanvinken.

Zet in het sjabloon
Code:
Private Sub Document_New()
  [COLOR="Blue"]userform1[/COLOR].show
End sub
Pas de blauwe tekst aan aan jouw situatie.
 
Menu/Extra/opties/algemeen/optie 'automatisch koppelingen bijwerken bij openen' aanvinken.

Zet in het sjabloon
Code:
Private Sub Document_New()
  [COLOR="Blue"]userform1[/COLOR].show
End sub
Pas de blauwe tekst aan aan jouw situatie.

Dit is al aangevinkt, en als ik het document open is het idd en nieuw en schoon veld nu ;) Tnx!

Werkt auto open op dezelfde manier in deze code?
 
Document_open of autoopen werkt bij een sjabloon alleen als je het sjabloon als document opent.
Wanneer je het sjabloon als sjabloon gebruikt om er een document op te baseren werkt de gebeurtenis Open niet, maar de gebeurtenis document_New wel. Daar zit het verschil.
 
Laatst bewerkt:
Document_open of autoopen werkt bij een sjabloon alleen als je het sjabloon als document opent.
Wanneer je het sjabloon als sjabloon gebruikt om er een document op te baseren werkt de gebeurtenis Open niet, maar de gebeurtenis document_New wel. Daar zit het verschil.

Die optie werkt helaas niet, heb de code wel geplaats en opgeslagen zonder foutmelding, maar start niet automatisch bij opnenen :(

Weet jij ook wat op de volgende punten? Hiervoor zou ik je zeer dankbaar zijn..

- Refresh optie werkt niet (d.w.z. dat zodra ik een dialoogvenster invul en ok druk er pas iets in beeld verschijnt als ik het gehele document refresh met ALT+A + F9)

- Het automatisch wegschrijven en toekennen van een bestandsnaam (= Projectnummer) in een door mij te definieren locatie op de server van het document

- Het koppelen van het dialoog aan een keuzeveld die een adres op kan roepen vanuit een excel of acces sheet...


:o
 
- Refresh optie werkt niet (d.w.z. dat zodra ik een dialoogvenster invul en ok druk er pas iets in beeld verschijnt als ik het gehele document refresh met ALT+A + F9)
Weet niet wat voor 'dialoogvenster' jij bedoelt.
Als het een userform is, maak dan een vervolgknop met de volgende code
Code:
Private Sub knop_vervolg_Click()
  hide
  activedocument.fields.update
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan