make a "selection" in a word document from a module in excel

E

eholz1

Hello Group,

I am trying to add bookmarks and text to a word doc. I can add a
bookmark using code from Excel like this:

Set wdApp = CreateObject("Word.Application")
Set myDoc = wdApp.Documents.Add(Template:=strDocumentNamePath)
With wdApp
..Visible = True
..WindowState = wdWindowStateMinimize 'wdWindowStateMaximize
End With

With wrdDoc.Bookmarks
.Add Name:=bName, Range:=rng
.DefaultSorting = wdSortByName
.ShowHidden = False
End With

The way that works in a word module works fine in word, but not when I
try to do the same thing from excel. the word code is below:
'With ActiveDocument.Bookmarks
'.Add Range:=Selection.Range, Name:="TestBookMark"
'.DefaultSorting = wdSortByName
'.ShowHidden = False
'End With

The problem I am having is understanding how to acess/define the word
document property/method (whichever it is) "Selection.Range" or
Selection.xxx in the module in my excel code. I know that the
"Selection" is local to the word document, but do not understand how to
do a "selection" from my excel module.

any info will be greatly appreciated.

thanks

eholz1
 
H

Helmut Weber

Hi eholz1,

how do you define rng in your code?

This is a simple example of setting bookmarks
to the first three words in a word doc.
The bookmarks are Mark1, Mark2, Mark 3.

Sub BookmarkinWord()
' early binding assumed
Dim WdApp As Word.Application
Dim MyDoc As Word.Document
Dim rTmp As Word.Range
Dim lCnt As Long
Set WdApp = CreateObject("Word.Application")
Set MyDoc = WdApp.Documents.Open("c:\test\lazy.doc")
Set rTmp = MyDoc.Range
With WdApp
..Visible = True
..WindowState = wdWindowStateMinimize 'wdWindowStateMaximize
End With
For lCnt = 1 To 3
With MyDoc.Bookmarks
.Add name:="Mark" & CStr(lCnt), _
Range:=MyDoc.Words(lCnt)
End With
Next
End Sub

HTH

--
Greetings from Bavaria, Germany

Helmut Weber, MVP WordVBA

Win XP, Office 2003
"red.sys" & Chr$(64) & "t-online.de"
 
E

Ed

You are much better off avoiding the Selection object in Word, especially
when you are accessing the doc from Excel. You will do much better to set a
range (and it must be Dim'd as Word.Range when you are writing in Excel
VBA). The Range can be anywhere in the doc you define it to be, regardless
of where the cursor is; the Selection is going to be only where the
insertion point or highlight is. The same goes for ActiveDocument - you are
setting a Document object to call the doc and open it; why not use that for
working in the doc?

BTW, in the code you showed us, you have
Set myDoc = wdApp.Documents.Add(Template:=strDocumentNamePath) and
With wrdDoc.Bookmarks

Ed
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top