llawrenceg
asked on
Edit a Word Doc Embedded in Excel Sheet
I have two word documents embedded in an Excel worksheet and as part of the embedding process for the second document I open the document and attempt to edit the document ( I'm trying to delete page 1) I get the message that the method is not recognized.
Any help would be appreciated
Any help would be appreciated
Sub AddCSR()
Dim FullFile As Variant
Dim work_book As Workbook
Dim last_sheet As Worksheet, WS As Worksheet
Dim OLEWd As OLEObject
Dim wdBM As Bookmark
Dim WD As Word.Document
Application.ScreenUpdating = False
Set work_book = Application.ActiveWorkbook
Set last_sheet = work_book.Sheets(work_book.Sheets.Count)
Set WS = work_book.Sheets.Add(After:=last_sheet)
WS.Name = "CSR1"
FullFile = Application.GetOpenFilename _
(" WORD files(*.doc),*doc", 1, "SELECT and OPEN the CSR1 File", , False)
If VarType(FullFile) = vbBoolean Then
MsgBox "No File Specified", vbExclamation
Exit Sub
End If
With OLEWd
Set OLEWd = ActiveSheet.OLEObjects.Add(Filename:=FullFile, Link:=False, DisplayAsIcon:=False)
'OLEWd.Verb xlVerbOpen
OLEWd.Name = "CSR1"
OLEWd.Width = 400
OLEWd.Height = 800
OLEWd.Top = 30
OLEWd.Left = 0
Set WD = OLEWd.Object
End With
With OLEWd
Set OLEWd = ActiveSheet.OLEObjects.Add(Filename:=FullFile, Link:=False, DisplayAsIcon:=False)
OLEWd.Verb xlVerbOpen
Selection.GoTo What:=wdGoToBookmark, Name:="Text26"
Selection.Bookmarks(wdBM).Delete
Selection.Bookmarks("\Page").Range.Delete
OLEWd.Name = "CSR2"
OLEWd.Width = 400
OLEWd.Height = 800
OLEWd.Left = 500
OLEWd.Top = 30
Set WD = OLEWd.Object
End With
Set WS = Nothing
Set FullFile = Nothing
Set OLEWd = Nothing
Application.ScreenUpdating = True
End Sub
ASKER
Graham:
I get a runtime error 4605 " This command is not available" on
WD.Application.Selection.B ookmarks(" \Page").Ra nge.Delete
I get a runtime error 4605 " This command is not available" on
WD.Application.Selection.B
I have now tested the whole of the code and can get this to work.
There are a couple of variable name changes and soem extra code that you might not need when it is fully running.
I think that the main problem was that your document object variable (WD) was set from the first instance of the OLEwd object, but you then recreated OLEwd, but tried to use WD again.
There are a couple of variable name changes and soem extra code that you might not need when it is fully running.
I think that the main problem was that your document object variable (WD) was set from the first instance of the OLEwd object, but you then recreated OLEwd, but tried to use WD again.
Option Explicit
Sub AddCSR()
Dim FullFile As Variant
Dim work_book As Workbook
Dim last_sheet As Worksheet, WS As Worksheet
Dim OLEWd As OLEObject
'Dim wdBM As Bookmark
Dim wdDoc As Word.Document
Dim wdApp As Word.Application
Application.ScreenUpdating = False
Set work_book = Application.ActiveWorkbook
Set last_sheet = work_book.Sheets(work_book.Sheets.Count)
For Each WS In work_book.Worksheets
If WS.Name = "CSR1" Then
WS.Delete
End If
Next WS
Set WS = work_book.Sheets.Add(After:=last_sheet)
WS.Name = "CSR1"
FullFile = Application.GetOpenFilename _
(" WORD files(*.doc),*doc", 1, "SELECT and OPEN the CSR1 File", , False)
If VarType(FullFile) = vbBoolean Then
MsgBox "No File Specified", vbExclamation
Exit Sub
End If
Set OLEWd = ActiveSheet.OLEObjects.Add(Filename:=FullFile) ', Link:=False, DisplayAsIcon:=False)
With OLEWd
'OLEWd.Verb xlVerbOpen
OLEWd.Name = "CSR1"
OLEWd.Width = 400
OLEWd.Height = 800
OLEWd.Top = 30
OLEWd.Left = 0
End With
Set OLEWd = ActiveSheet.OLEObjects.Add(Filename:=FullFile, Link:=False, DisplayAsIcon:=False)
With OLEWd
OLEWd.Verb xlVerbOpen
Set wdDoc = OLEWd.Object
If wdDoc.Bookmarks.Exists("Text26") Then
wdDoc.Application.Selection.GoTo What:=wdGoToBookmark, Name:="Text26"
'Selection.Bookmarks(wdBM).Delete
wdDoc.Application.Selection.Bookmarks("\Page").Range.Delete
Else
MsgBox "Bookmark missing"
End If
OLEWd.Name = "CSR2"
OLEWd.Width = 400
OLEWd.Height = 800
OLEWd.Left = 500
OLEWd.Top = 30
End With
Set WS = Nothing
Set FullFile = Nothing
Set OLEWd = Nothing
Application.ScreenUpdating = True
End Sub
ASKER
I get the same eror message. This command is not available
wdDoc.Application.Selectio n.Bookmark s("\Page") .Range.Del ete
wdDoc.Application.Selectio
That line does not appear in my latest revision of your code. That version tests for the presence of the bookmark. If it exists, the VBA code deletes the page that contains the bookmark. Otherwise the code reports that the bookmark is missing.
ASKER
"wdDoc.Application.Selecti on.Bookmar ks("\Page" ).Range.De lete"
is the line of code giving me a problem as the message says this command is not available
Did you have a different version from the one just up above. That is the one I copied
is the line of code giving me a problem as the message says this command is not available
Did you have a different version from the one just up above. That is the one I copied
Sorry, I was looking at an intermediate version.
I'll check it again.
I'll check it again.
I can't reproduce the problem with my own Word document. Can you post the document (edited if necessary)?
ASKER
Sorry< I have been out with the flu for the past week and apologize for a lack of response
ASKER
I'm attachng a copy of the document
CSR1-for-fiscal-plans.doc
CSR1-for-fiscal-plans.doc
I note that there is no bookmark called Text26, so no deletion occurs, and the message box reports that. There is no VB error message.
ASKER
My mistake. It should have been "Text41"
ASKER
I get the same eror message. This command is not available
wdDoc.Application.Selectio n.Bookmark s("\Page") .Range.Del ete
wdDoc.Application.Selectio
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
I discovered my own answer
Also Selection.Bookmarks(wdBM).
Try this
Open in new window