Graag wil ik binnen een word document vanuit VBA zonder tussenkomst van word zelf een aantal woorden wijzigen (variabele naar namen en dergelijke). hiervoor moet ik een stream opzetten met het contenttype application/msword. en daar strings uit lezen en weer in terug schrijven. ik heb al een tijd op google gezocht en in de msdn maar kan hier geen duidelijke beschrijving voor vinden. wie kan mij opweg helpen?
Als ik het zo lees wil je gewoon een makro maken in Word dat een search and replace doet, of niet? Waarin wordt de VBA code uitgevoerd?
The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.
jou conclusie is correct, de code wordt uitgevoerd vanuit ACCESS
Dat lijkt me niet mogelijk zonder het binaire formaat van Word-documenten te hacken.
Kijk eens naar een andere documentformaat (RTF, of bijv. XML)
Kijk eens naar een andere documentformaat (RTF, of bijv. XML)
Mag je geen gebruik maken van Word, of mag de gebruiker niet zien dat Word op de achtergrond draait? Je kan vanuit Access VBA een instatie van Word opstarten die voor de gebruiker verborgen blijft.
Wel natuurlijk je references goed zetten.
code:
1
2
3
| Dim Word as Word.Application
Set Word = CreateObject("Word.Application")
Word.Visible = false |
Wel natuurlijk je references goed zetten.
Oke, ik heb al met rtf gewerkt in dit verhaal dat werkt opzich goed, alleen omdat er plaatjes in het document aanwezich zijn komt het formaat gelijk uit op een 600kb, wordt openen lijkt mij niet de handigste optie omdat dit in sommige gevallen zo'n 250x per seconde moet gebeuren. als textstream werkt dit ok, maar een word aplicatie starten vermijd ik liever.
op de een of de andere manier moet het toch mogelijk zijn om bijvoorbeeld een CDO.filestream op te starten met als content type application/word, dit is immers een MIME type, of zie ik dit helemaal verkeerd?
op de een of de andere manier moet het toch mogelijk zijn om bijvoorbeeld een CDO.filestream op te starten met als content type application/word, dit is immers een MIME type, of zie ik dit helemaal verkeerd?
[ Voor 5% gewijzigd door TygeR op 13-10-2006 09:16 ]
Je hoeft Word maar 1 keer te starten.TygeR schreef op vrijdag 13 oktober 2006 @ 09:15:
wordt openen lijkt mij niet de handigste optie omdat dit in sommige gevallen zo'n 250x per seconde moet gebeuren. als textstream werkt dit ok, maar een word aplicatie starten vermijd ik liever.
Even het volgende, ik heb 1 word bestand, deze kopieer ik en ik doe een search en replace. de uitkomst zijn dus enkele duizenden word bestanden. kan iemand dan even een script voobeeld geven wat er bedoeld wordt met word applicatie starten en dan search en replace?
Een bijkomend probleem is dat de software (de database) op verschillende pc's wordt gedraaid met verschillende instellingen, en word versie's.
Een bijkomend probleem is dat de software (de database) op verschillende pc's wordt gedraaid met verschillende instellingen, en word versie's.
[ Voor 21% gewijzigd door TygeR op 13-10-2006 12:31 ]
Word -> Makro opnemen. Doe wat je de code wilt laten doen en bekijk daarna de gegenereerde VBA code. Die kan je daarna naar hartelust optimaliseren en verbeteren.
Maar als je nu met RTF werkt kan je toch ook een search and replace doen in de 'ruwe' data?
Wat is eigenlijk het probleem dat je uiteindelijk aan het oplossen bent? Dan kunnen we misschien nog wat gerichtere tips geven.
Maar als je nu met RTF werkt kan je toch ook een search and replace doen in de 'ruwe' data?
Wat is eigenlijk het probleem dat je uiteindelijk aan het oplossen bent? Dan kunnen we misschien nog wat gerichtere tips geven.
The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.
ZOlang je met het word fromaat blijft werken zul je altijd een instantie van word moeten blijven draaien. Dat is het nadeel van het gesloten office formaat. Er zijn natuurlijk wel 3rd party applicaties, maar deze kunnen geen enkele garantie bieden over het blijven werken.
Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'
Verwijderd
als je met eender welke wordversie (vanaf word 97) wil werken, moet je een instantie starten met behulp van late binding, zonder verwijzing naar de word bibliotheek.
Visual Basic:
de code for replace kan je opnemen in word en integreren in access mits enkele aanpassingen waarvoor ik in de code hierboven enkele hints heb gegeven.
1
2
3
4
5
6
7
8
9
10
11
12
| dim WordApp as object dim WordDoc as object set wordapp=createobject("word.application") wordapp.visible=false set worddoc=wordapp.documents.open("c:\temp\mijndoc.doc") 'wordapp.application.selection.find ... '... 'wordapp.application.selection.find.execute 2 worddoc.save worddoc.close false set worddoc=nothing 'enz. |
Pagina: 1