[VBA] Contenttype "application/msword" File

Pagina: 1
Acties:

  • TygeR
  • Registratie: Oktober 2000
  • Laatst online: 06-02-2025
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?

  • Boss
  • Registratie: September 1999
  • Laatst online: 15:05

Boss

+1 Overgewaardeerd

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.


  • TygeR
  • Registratie: Oktober 2000
  • Laatst online: 06-02-2025
jou conclusie is correct, de code wordt uitgevoerd vanuit ACCESS

  • BertS
  • Registratie: September 2004
  • Laatst online: 27-10-2025
Dat lijkt me niet mogelijk zonder het binaire formaat van Word-documenten te hacken.
Kijk eens naar een andere documentformaat (RTF, of bijv. XML)

  • PhysicsRules
  • Registratie: Februari 2002
  • Laatst online: 22-12-2025

PhysicsRules

Dux: Linux voor Eenden

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.

code:
1
2
3
Dim Word as Word.Application
Set Word = CreateObject("Word.Application")
Word.Visible = false


Wel natuurlijk je references goed zetten.

  • TygeR
  • Registratie: Oktober 2000
  • Laatst online: 06-02-2025
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?

[ Voor 5% gewijzigd door TygeR op 13-10-2006 09:16 ]


  • Daos
  • Registratie: Oktober 2004
  • Niet online
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.
Je hoeft Word maar 1 keer te starten.

  • TygeR
  • Registratie: Oktober 2000
  • Laatst online: 06-02-2025
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.

[ Voor 21% gewijzigd door TygeR op 13-10-2006 12:31 ]


  • TygeR
  • Registratie: Oktober 2000
  • Laatst online: 06-02-2025
Niemand die mij hierin op weg kan helpen?

  • Boss
  • Registratie: September 1999
  • Laatst online: 15:05

Boss

+1 Overgewaardeerd

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.

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.


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 10-02 15:42

Janoz

Moderator Devschuur®

!litemod

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:
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.
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.
Pagina: 1