我有一个 docx 模板,其中有很多形状,每个形状都有一个书签名称。
通过VBA代码,我需要复制形状,同时传递书签名称,然后粘贴到目标新Word文档中。
我有一个 .doc 文件格式的旧模板,下面的 VBA 代码可以工作。
If SrcDoc.Bookmarks.Exists(bmName) Then
SrcDoc.Shapes(bmName).Select
WrdApp.Selection.Copy
DestDoc.Activate
DestDoc.Bookmarks("\EndOfDoc").Select
WrdApp.Selection.PasteAndFormat wdPasteDefault
我尝试了以下代码行。以及每行代码给出的错误。每行单独尝试。
SrcDoc.Shapes.Range(Array(bmName)).Select '**-- The item with specified name wasn't found**
SrcDoc.Bookmarks("bmName").Select '**-- The requested member of the collection does not exist.**
我已经在 M365 上测试了您的 docx 代码,没有出现任何问题。
请尝试验证形状名称,确保名为
bmName
的形状存在。
Sub ListShp()
Dim Shp As Shape
For Each Shp In ActiveDocument.Shapes
Debug.Print Shp.Name
Next
End Sub
Sub InserShpBookmark()
Dim shp As Shape
Set shp = ActiveDocument.Shapes.AddShape(msoShapeRectangle, _
Left:=100, _
Top:=100, _
Width:=200, _
Height:=100)
With ActiveDocument.Bookmarks
.Add Range:=Selection.Range, Name:="TestBK"
.DefaultSorting = wdSortByName
.ShowHidden = False
End With
Debug.Print ActiveDocument.Bookmarks("TestBK").Start ' 0
Debug.Print ActiveDocument.Shapes.Count
Debug.Print ActiveDocument.Shapes(1).Name ' Rectangle 1
Debug.Print ActiveDocument.Shapes("TestBK").Name ' error
End Sub