【问题标题】:Generate bookmarks in Word 2010 programmatically, with the header name as the bookmark name以编程方式在 Word 2010 中生成书签,将标头名称作为书签名称
【发布时间】:2012-07-05 05:41:15
【问题描述】:

我需要以编程方式在 Word 2010 中生成书签,将标头名称作为书签名称。

我有以下代码可以将单词变成书签,但书签名称与字符串 Heading 1 保持相同,仅在 name 变量中可用:

Sub bookmarking()
    Selection.EndKey Unit:=wdLine, Extend:=wdExtend
    With ActiveDocument.Bookmarks
        .Add Range:=Selection.Range, Name:=" Heading 1"
        .DefaultSorting = wdSortByName
        .ShowHidden = False
    End With
End Sub

我想要剪贴板中的内容,而不是 name 变量中的 Heading 1。请帮我用剪贴板内容替换 Heading 1

【问题讨论】:

  • 如果剪贴板包含不是文本的对象(例如图像)会发生什么?也许尝试获取图像的替代文本?如果没有,那是什么?书签名称的某种唯一标识符?
  • 谢谢杰克.....很有帮助..

标签: vba ms-word word-2010


【解决方案1】:

使用Microsoft Forms 2.0 Object Library 中的DataObject

Private Function GetClipboardData()
    Dim objDataObject As MSForms.DataObject ''need to add reference in Tools |References
    Set objDataObject = New MSForms.DataObject

    objDataObject.GetFromClipboard
    On Error Resume Next
    GetClipboardData = objDataObject.GetText
    If Err.Number = -2147221404 Then
       MsgBox "Error: current clipboard data is either empty or is not text. Clibpoard must contain text."
    End If
End Function

然后,返回您的主代码,将书签名称设为此剪贴板数据:

...
.Add Range:=Selection.Range, Name:=GetClipboardData()
...

这对您来说是一个好的开始吗?根据您的需要,还有其他方法可能更强大。但是,这应该可以作为很好的概念验证。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-08
    • 1970-01-01
    • 1970-01-01
    • 2016-05-20
    • 1970-01-01
    • 2012-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多