Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[VBA] Excel Macro Word bewerken

Pagina: 1
Acties:

  • ajakkes
  • Registratie: Maart 2004
  • Laatst online: 16-05 22:32
De volgende excel macro opent een word document om hier vervolgens een bewerkingen op uit te voeren. Maar om de een of andere reden lukt het me niet om Word Specifieke Functies te gebruiken. Het lijkt erop dat deze niet beschikbaar zijn. Toch kom ik ze in alle voorbeelden die ik vind tegen.

TemplateLocation en FileLocation zijn absolute paden naar bestanden.
De Word template wordt geopend.

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
        

        Dim wdApp As Object, wdDoc As Object
'        Dim wdApp As Word.Application, wdDoc As Word.Document
        
        On Error Resume Next
        Set wdApp = GetObject(, "Word.Application")
        If Err.Number <> 0 Then 'Word isn't already running
        Set wdApp = CreateObject("Word.Application")
        End If
        On Error GoTo 0
        
        Set wdDoc = wdApp.Documents.Open(TemplateLocation)
    
        wdApp.Visible = True
        
        wdDoc.Activate
        Selection.TypeText (FileLocation)

👑


Verwijderd

wordspecifieke opdrachten zijn gekoppeld aan een geldig wordobject, dus in jouw code is dit de objectvariabele wddoc of wdapp.
regel 16 gaat oa. om bovenstaande reden niet functioneren : dit wordt dus wdapp.selection.typet...

daarenboven zijn niet alle opdrachten in eender welke context beschikbaar : indien de toepassing niet zichtbaar is zullen selectie- en activatieopdrachten beperkt beschikbaar zijn.
deze kan je dan best vervangen. bv. wdoc.range.text=filelocation enz.

bij het programmeren is het handig sterke typering (early binding) te gebruiken. Door regel 2 te decommentariëren geeft de vbe toegang tot het objecctmodel dankzij intellisense.

  • ajakkes
  • Registratie: Maart 2004
  • Laatst online: 16-05 22:32
Regel 2 had ik inderdaad ook geprobeerd. Het nadeel van die regel is dat ik bij VBA -> Extra -> Verwijzingen Word moet aanvinken om het te laten werken.

Als ik nu handmatig de focus naar word breng lukt het inderdaad om mijn code uit te voeren. Ik moet nu alleen de focus automatisch van excel naar word en weer terug zien te krijgen.

👑


Verwijderd

ajakkes schreef op donderdag 09 februari 2012 @ 13:21:
Regel 2 had ik inderdaad ook geprobeerd. Het nadeel van die regel is dat ik bij VBA -> Extra -> Verwijzingen Word moet aanvinken om het te laten werken.
vandaar dat ik zei tijdens het programmeren.
nadat je code gedebugged is en klaar om uit te voeren verwijder je de verwijzing en declareer je de wordobjecten met late binding (as object)
Als ik nu handmatig de focus naar word breng lukt het inderdaad om mijn code uit te voeren. Ik moet nu alleen de focus automatisch van excel naar word en weer terug zien te krijgen.
niet nodig. je kan ofwel de code aanpassen om in een niet-geactiveerde, niet-zichtbare context correct te functioneren (beste optie), óf de toepassing zichtbaar maken en screenupdating uitzetten (minder goed).
Visual Basic:
1
2
3
4
'snelst aangepast : optie 2
wdapp.visible=true
wdapp.screenupdating=false
'jouw code