[VB6] schrijven naar Word, bladwijzer weg

Pagina: 1
Acties:

  • Dikke Foaf
  • Registratie: November 2002
  • Laatst online: 30-11 18:51
Ik heb een bestaand Word-document, met daarin een bladwijzer.
Ik wil nu vanuit VB6 naar dit Word-document, op de plaats van de bladwijzer wat text schrijven.
Dit werkt op zich wel, alleen als ik het Word-document open en kijk bij 'Invoegen' -> 'Bladwijzer', staat die bladwijzer hier niet meer tussen na de eerste keer text gedumpt te hebben naar het Word-document.
Dit is wat vervelend, omdat ik het Word-document wilde behouden en keer op keer nieuwe text naar die bladwijzer schrijven, wat nu niet werkt, omdat na 1x schrijven de bladwijzer verdwijnt.
Is dit een bekend probleem, of doe ik iets verkeerd?
Google etc. bood weinig informatie.

De code:
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
25
26
27
28
29
30
31
32
33
34
35
36
Option Explicit

Private WordObj As New Word.Application
Private WordDoc As Word.Document
Private strFilePath As String
Private strText As String


Private Sub Command1_Click()

strText = "HW-Address:"

strFilePath = App.Path & "\labels.doc"

Set WordDoc = WordObj.Documents.open(strFilePath)

'werkt, maar bladwijzer verdwijnt uit document
'en die moet blijven natuurlijk,
'zodat dit meerdere malen kan worden gedaan
'WordDoc.Bookmarks("bmMac1").Select
'WordObj.Selection.Text = "blaat"

'werkt ook, maar bladwijzer verdwijnt uit document
'WordDoc.Bookmarks("bmMac1").Range.Text = "blaat"

'werkt ook, maar bladwijzer verdwijnt weer
WordDoc.Bookmarks("bmMac1").Select  'zet cursor op juiste positie
WordObj.Selection.TypeText strText  'schrijf text

WordDoc.Close
WordObj.Quit

Set WordDoc = Nothing
Set WordObj = Nothing

End Sub

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Op alle 3 de manieren "selecteer" je (voor zover ik het begrijp) de bookmark en overschrijf je die met nieuwe text. Wat je waarschijnlijk wil is voor (of na) de bookmark tekst wegschrijven.

Ik ben nooit zo'n fan geweest van Word omdat het meestal een puinhoop wordt als je er wat dingen op los laat (de bookmarks, paragraphs, selections, ranges etc. vliegen je om de oren) dus ik ben er zeker niet al te best in thuis; maar het lijkt me dus zoiets te zijn.

[edit]
Ik heb het even getest; dit werkt:
Visual Basic:
1
2
WordDoc.Bookmarks("MyBookmark").Select
Selection.InsertAfter "Blah"

[ Voor 12% gewijzigd door RobIII op 01-12-2006 01:08 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • pjonk
  • Registratie: November 2000
  • Laatst online: 22-11 20:39
Ik heb 2 opmerkingen:
- Het klopt dat je bookmark verdwijnt als je deze overschrijft met tekst. Je moet er zelf voor zorgdragen dat je de bookmark weer toevoegt
- Gebruik altjid een Range object ipv de Selectie om tekst te plaatsen. Een Range object verplaatst de cursor positie niet en is een stukje sneller.

Hieronder een nette routine die ervoor zorgt dat de bookmark behouden blijft na het plaatsen van de tekst.
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Public Function PutDataInDocument(BookmarkName As String, PutData As String) As Boolean
Dim rDocRange As Range

On Error GoTo PutDataInDocument_Error

    If Not ActiveDocument.Bookmarks.Exists(BookmarkName) Then
        PutDataInDocument = False
        Exit Function
    End If
    
    Set rDocRange = ActiveDocument.Bookmarks(BookmarkName).Range
    rDocRange.Text = PutData
    ActiveDocument.Bookmarks.Add Name:=BookmarkName, Range:=rDocRange
    PutDataInDocument = True
    Exit Function

PutDataInDocument_Error:
    PutDataInDocument = False

End Function

It’s nice to be important but it’s more important to be nice