Word VBA 宏 Bookmarks 报错5828 错误的书签名称 解决办法

问题描述:

在用 Word VBA 编写自动添加书签的宏时,出现以下错误:

代码:

Sub AddBookmark(prefix As String)
    Selection.HomeKey Unit:=wdLine, Extend:=wdExtend '这两行代码选中整一行
    Selection.MoveEnd Unit:=wdLine, Count:=1
    Set bookmarkName = Selection.Range
    With ActiveDocument.Bookmarks
        .Add Range:=Selection.Range, Name:=prefix & "_" & bookmarkName
        .DefaultSorting = wdSortByName
        .ShowHidden = False
    End With
End Sub

 查阅国内外的相关资料无果,只能自己 debug

由于前面使用 Selection 选中了整一行文本,而通过观察发现选中的整行文本实际上是包含换行符的,如下图:

 于是猜测可能是该换行符引起的报错,于是在添加书签前多加入一行代码:

bookmarkName.End = bookmarkName.End - 1

用于取消选中最后的换行符,成功解决问题

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用以下VBA代码将Excel表格中的区域按名称复制到Word中与表格区域名称相同的书签位置: ```vba Sub CopyExcelRangeToWordBookmark() Dim rng As Range Dim wdApp As Object Dim wdDoc As Object ' 设置要复制的Excel区域 Set rng = ThisWorkbook.Worksheets("Sheet1").Range("A1:B10") ' 启动Word应用程序 Set wdApp = CreateObject("Word.Application") wdApp.Visible = True ' 打开Word文档 Set wdDoc = wdApp.Documents.Open("C:\Your\Path\To\Word.docx") ' 遍历所有书签 For Each bkm In wdDoc.Bookmarks ' 检查书签名称是否与表格区域名称匹配 If bkm.Name = rng.Name.Name Then ' 将Excel区域复制到书签位置 rng.Copy wdDoc.Bookmarks(bkm.Name).Range.PasteExcelTable LinkedToExcel:=False, WordFormatting:=False, RTF:=False Exit For ' 找到匹配的书签后退出循环 End If Next bkm ' 清理对象 Set rng = Nothing Set wdDoc = Nothing Set wdApp = Nothing End Sub ``` 请注意,您需要将代码中的以下部分进行修改,以适应您的具体情况: - `Set rng = ThisWorkbook.Worksheets("Sheet1").Range("A1:B10")`:将`Sheet1`更改为包含要复制的Excel区域的工作表的名称,并将`A1:B10`更改为适当的区域。 - `Set wdDoc = wdApp.Documents.Open("C:\Your\Path\To\Word.docx")`:将文件路径更改为包含要复制到的Word文档的路径。 此代码将遍历Word文档中的所有书签,并检查书签名称是否与Excel区域名称匹配。如果找到匹配的书签,它将在该位置粘贴Excel区域。 请确保在运行代码之前,已将适当的引用添加到VBA编辑器中(工具->引用),以便能够访问Excel和Word对象模型。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值