Создавайте закладки в Word 2010 программно, используя имя заголовка в качестве имени закладки

Изображение документа

Мне нужно создавать закладки в 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

Вместо Heading 1 в переменной name я хочу содержимое из буфера обмена. Пожалуйста, помогите мне заменить это Heading 1 с содержимым буфера обмена.

1 ответ

Решение

Использовать DataObject от Microsoft Forms 2.0 Object Library:

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()
...

Это хорошее начало для вас? Есть и другие способы, которые могут быть более надежными в зависимости от ваших потребностей. Однако это должно послужить хорошим подтверждением концепции.

Другие вопросы по тегам