remcop1989
Gebruiker
- Lid geworden
- 29 mrt 2012
- Berichten
- 492
Ik heb de volgende situatie:
Vanuit een extern programma wordt een Word-document gevuld met stukken tekst en tabellen. 6 seconden na het openen van het Word-document wordt (in Word) een macro gestart "document_new" (vanuit "ThisDocument"). Deze macro start de macro "checktext" vanuit een module. Zie onderstaand:
Als de tekst "Deze offerte is gemaakt met behulp van Accountview." wordt gevonden voert hij de macro "FormatTableQuotationLines_NL" uit, anders voert hij de macro "FormatTableQuotationLines_DE" uit. Deze 2 macro's zorgen voor een bepaalde opmaak van een tabel in het document en werken 100% correct. Deze tabel staat ALTIJD op pagina 2
Het probleem hierbij is als volgt:
Na 6 seconden zoekt Word dus naar de tekst "Deze offerte is gemaakt met behulp van Accountview.".
Deze tekst staat onder aan een tabel in het Word-document. Reden hiervoor is dat er zo voor gezorgd wordt dat de macro die de tabel opmaakt ook pas uitgevoerd wordt nadat de tabel er volledig in staat.
Het kan echter zijn dat het plaatsen van de tabel in Word langer dan 6 seconden duurt. Dit zorgt ervoor dat de tekst "Deze offerte is gemaakt met behulp van Accountview." er na 6 seconden nog niet instaat en dus de "opmaak-macro" niet uitgevoerd wordt.
Hoelang het duurt om de tabel in Word te zetten is niet op voorhand te zeggen. De ene keer is dit 3 seconden, dan weer 5 seconden, dan weer 10 seconden en dan weer 18 seconden. Het simpel "verlengen" van de timer is niet te doen.
NB: in het document waar zich het probleem nu voordoet duurt het tussen de 15 en 20 seconden voordat de tabel volledig in Word staat. Zet ik de timer op 22 seconden, dan loopt alles op rolletjes en voert hij de macro perfect uit
Ik zelf denk nu aan een oplossing die als volgt werkt:
stap 1) controleer of het document op pagina 1 een bepaald kenmerk (stuk tekst) bevat
stap 2) als dit zo is: start dan om de 2 seconden de macro "checktext" en controleer op de zin "Deze offerte is gemaakt met behulp van Accountview."
Hiermee zou e.e.a. correct moeten werken mijns inziens. Hiertoe heb ik al de volgende code gevonden, maar deze zorgt ervoor dat de macro voortijdig stopt en ik weet niet waarom:
In "ThisDocument":
In de module:
Wie helpt mij uit de brand?
Vanuit een extern programma wordt een Word-document gevuld met stukken tekst en tabellen. 6 seconden na het openen van het Word-document wordt (in Word) een macro gestart "document_new" (vanuit "ThisDocument"). Deze macro start de macro "checktext" vanuit een module. Zie onderstaand:
Code:
[COLOR="#FF0000"]'eerst wordt in "ThisDocument" een timer ingesteld die na 6 seconden de macro "checktext" start[/COLOR]
Private Sub document_new()
Application.OnTime when:=Now + TimeValue("00:00:06"), Name:="checktext"
End Sub
[COLOR="#FF0000"]'de macro checktext wordt gestart vanuit een module[/COLOR]
Sub checktext()
With ActiveDocument.Content.Find
.Text = "Deze offerte is gemaakt met behulp van Accountview."
.Forward = True
.Execute
If .Found = True Then
FormatTableQuotationLines_NL
ActiveDocument.Activate
Else: FormatTableQuotationLines_DE
End If
End With
End Sub
Als de tekst "Deze offerte is gemaakt met behulp van Accountview." wordt gevonden voert hij de macro "FormatTableQuotationLines_NL" uit, anders voert hij de macro "FormatTableQuotationLines_DE" uit. Deze 2 macro's zorgen voor een bepaalde opmaak van een tabel in het document en werken 100% correct. Deze tabel staat ALTIJD op pagina 2
Het probleem hierbij is als volgt:
Na 6 seconden zoekt Word dus naar de tekst "Deze offerte is gemaakt met behulp van Accountview.".
Deze tekst staat onder aan een tabel in het Word-document. Reden hiervoor is dat er zo voor gezorgd wordt dat de macro die de tabel opmaakt ook pas uitgevoerd wordt nadat de tabel er volledig in staat.
Het kan echter zijn dat het plaatsen van de tabel in Word langer dan 6 seconden duurt. Dit zorgt ervoor dat de tekst "Deze offerte is gemaakt met behulp van Accountview." er na 6 seconden nog niet instaat en dus de "opmaak-macro" niet uitgevoerd wordt.
Hoelang het duurt om de tabel in Word te zetten is niet op voorhand te zeggen. De ene keer is dit 3 seconden, dan weer 5 seconden, dan weer 10 seconden en dan weer 18 seconden. Het simpel "verlengen" van de timer is niet te doen.
NB: in het document waar zich het probleem nu voordoet duurt het tussen de 15 en 20 seconden voordat de tabel volledig in Word staat. Zet ik de timer op 22 seconden, dan loopt alles op rolletjes en voert hij de macro perfect uit
Ik zelf denk nu aan een oplossing die als volgt werkt:
stap 1) controleer of het document op pagina 1 een bepaald kenmerk (stuk tekst) bevat
stap 2) als dit zo is: start dan om de 2 seconden de macro "checktext" en controleer op de zin "Deze offerte is gemaakt met behulp van Accountview."
Hiermee zou e.e.a. correct moeten werken mijns inziens. Hiertoe heb ik al de volgende code gevonden, maar deze zorgt ervoor dat de macro voortijdig stopt en ik weet niet waarom:
In "ThisDocument":
Code:
Private Sub document_new()
Starttimer
End Sub
In de module:
Code:
Sub Starttimer()
volgendestart = Now + TimeValue("00:00:02")
Application.OnTime volgendestart, "checktext"
End Sub
Wie helpt mij uit de brand?
Laatst bewerkt door een moderator: