[VB+ Word XP] Bestand openen

Pagina: 1
Acties:

  • Nexopheus
  • Registratie: Juni 2001
  • Laatst online: 28-01 13:50
Goed, het volgende is het probleem.

Ik heb een simpel VB (6.0) progje gemaakt die een word applicatie openend en vervolgens sleutelwoorden vervangt door opgegeven variabelen. Erg simpel ... tot zover.

Op een win98 machine, met word 2000 gaat het precies zoals het moet gaan, echter wanneer ik de exacte code gebruik op een win2k machine en met Word XP gaat er iets fout.

Op het moment dat het word document geopend wordt krijg ik de melding dat het document vergrendeld is voor bewerking van [naam]. Ik kies dan de optie om een lokale kopie te maken en de wijzigingen later te samenvoegen.

Uiteindelijk krijg ik de foutmelding "Run time error '5' Invalid .....blblblbll

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Option Explicit
Dim ObjWord As Word.Application

Private Sub RepPara(Header As String, Data As String)
    With ObjWord.Selection.Find
        .ClearFormatting
        .Text = Header
        .Execute Forward:=True
    End With
    Clipboard.Clear
    Clipboard.SetText (Data)
    ObjWord.Selection.Paste
    Clipboard.Clear
End Sub

Private Sub Command1_Click()
    MsgBox "HERE WE GO"
    Set ObjWord = New Word.Application
    ObjWord.Documents.Open "D:\Pb.doc"
    Call RepPara("[NAAM]", "Nexopheus")
    ObjWord.ActiveDocument.SaveAs ("D:\NewReport.doc")
    ObjWord.Quit
    Set ObjWord = Nothing
End Sub


Iemand een idee?

Oh ja, Ik ben als admin. ingelogd. Word document kan door iedereen geopend worden en worden gewijzigd.....

edit:

Elke keer is de functie ClearFormatting de boosdoener.
Als ik de voorbeelden exact gebruik zoals in de help van word gebeurd dit ook

Wat niet kan is nog nooit gebeurd


  • Nexopheus
  • Registratie: Juni 2001
  • Laatst online: 28-01 13:50
Bijstelling:
.Clearformatting is niet elke keer de boosdoener, maar het gaat wel fout in de With ObjWord.Selection.Find

NIEMAND???

Wat niet kan is nog nooit gebeurd


  • Unifex
  • Registratie: Juni 2002
  • Laatst online: 02-04 13:57
Hey Nexopheus,

Ik kan het probleem zo niet naspelen op mijn machine (wel geprobeerd, maar het werkt gewoon), maar ik kan me voorstellen dat het met de word 9.0 (i.p.v. 10.0) reference te maken kan hebben.
Al zou Office XP backwards compatible moeten zijn (de functies dan).

Even een tip, ik heb zelf ooit zo'n soort functionaliteit gemaakt met c++ en heb gemerkt dat formfields zich daar beter voor lenen. (één nadeel, je kunt niets in de header en footer plaatsen).

Succes

Guess what we are not stupid, just ignorant!


  • Nexopheus
  • Registratie: Juni 2001
  • Laatst online: 28-01 13:50
In Word XP? Welke service packs heb je geinstalleerd ? Het lijkt er op dat ik geen referentie naar het juiste object krijg. De Selection.Find werkt niet.

Kun je me mischien iets meer info verstrekken over die formfields...?
BvD

Wat niet kan is nog nooit gebeurd


  • Unifex
  • Registratie: Juni 2002
  • Laatst online: 02-04 13:57
Altijd lastig zoiets :) Ik denk toch dat je het in die references moet zoeken.
In word met je even het menu forms aanzetten en dan dingen toevoegen en opslaan als template.

De volgende code zou moeten werken.

Dim objApp As New Word.Application
Dim objDoc As Word.Document

Dim objF As FormField

Call objApp.Documents.Add("templatenaampje.dot")

'Door de collectie lopen
For Each objF In objApp.Documents(1).FormFields
MsgBox objF.Name
Next

'Zoeken naar een bepaald formfield
Set objF = objApp.Documents(1).FormFields.Item("Text1")
MsgBox objF.Name

gewoon even de object browser gebruiken en alles wordt duidelijk

Succes

Guess what we are not stupid, just ignorant!


  • Nexopheus
  • Registratie: Juni 2001
  • Laatst online: 28-01 13:50
Ok, zal het eens proberen.

De code werkt overigens wel in VBA.

Zal binnenkort de resultaten vermelden..

Wat niet kan is nog nooit gebeurd

Pagina: 1