将添加书签的形状复制到新的Word文档中

问题描述 投票:0回答:1

我有一个 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.** 
vba ms-word
1个回答
0
投票
  • 我已经在 M365 上测试了您的 docx 代码,没有出现任何问题。

  • 请尝试验证形状名称,确保名为

    bmName
    的形状存在。

Sub ListShp()
    Dim Shp As Shape
    For Each Shp In ActiveDocument.Shapes
        Debug.Print Shp.Name
    Next
End Sub

  • 添加书签不会更改形状的名称
  • 在新的空白文档上测试以下 Word VBA 代码。
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

© www.soinside.com 2019 - 2024. All rights reserved.