Закладка VBA Excel в VBA - Сохранить закладку - PullRequest
0 голосов
/ 17 июня 2020

Я копирую таблицу в закладку текстового документа. Закладка включает «таблицу-заполнитель». Код, который я сейчас использую, -

'set word application dimensions
Dim wdApp As Object
Dim wdDoc As Object
Set wdApp = CreateObject("word.application")


'Open the relevent Document
    wdApp.Visible = True
    Set wdDoc = wdApp.Documents.Add(Template:="\\svr\documents\Word\Document Template.dotx", NewTemplate:=False, DocumentType:=0)


    '  Create reference to range and copy

    Dim ExcListObjQ As Range
    Set ExcListObjQ = Sheets("Quote Tables").Range("C4.I24")
    ExcListObjISRQ.Copy


    'Paste Object to Location
    wdDoc.Bookmarks("RNBMQuoteTableW").Range.PasteExcelTable _
    LinkedToExcel:=False, _
    WordFormatting:=False, _
    RTF:=True

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

Чтобы уточнить, таблица находится внутри закладки.

Начальное расположение закладки может измениться в течение жизни текстового документа, но может использоваться при запуске подпрограммы.

Ответы [ 2 ]

0 голосов
/ 18 июня 2020

Мы смогли использовать это как решение

Dim iTableNum As Integer

For J = 1 To wdDoc.Tables.Count
wdDoc.Tables(J).Select
iTableNum = J
Exit For
Next J

wdDoc.Bookmarks("RNBMQuoteTableW").Select
wdApp.Selection.Paste

wdDoc.Bookmarks.Add "RNBMISRQuoteTableW", wdDoc.Tables(iTableNum)

End Sub
0 голосов
/ 17 июня 2020

Замена содержимого закладки обычно удаляет закладку. Поэтому вам нужно сохранить диапазон закладок, а затем заменить его после вставки. Ваш код не является чем-то, что я могу легко запустить здесь для тестирования, но вот типичная процедура VBA для замены закладки:

Sub ReplaceBookmark(Which$, What$)
    Dim BookmarkRange As Range, SmartCutPasteWasOnB As Boolean
    If Options.SmartCutPaste = True Then
        SmartCutPasteWasOnB = True
        Options.SmartCutPaste = False
    End If
    Set BookmarkRange = ActiveDocument.Bookmarks(Which$).Range
    BookmarkRange.Text = What$
    ActiveDocument.Bookmarks.Add Name:=Which$, Range:=BookmarkRange
    If SmartCutPasteWasOnB = True Then
        Options.SmartCutPaste = True
    End If
End Sub

Код, измененный для вашего приложения:

Dim BookmarkRange As Range, SmartCutPasteWasOnB As Boolean

If Options.SmartCutPaste = True Then
    SmartCutPasteWasOnB = True
    Options.SmartCutPaste = False
End If
Set BookmarkRange = wdDoc.Bookmarks("RNBMQuoteTableW").Range
BookmarkRange.PasteExcelTable LinkedToExcel:=False, WordFormatting:=False, RTF:=True
wdDoc.Bookmarks.Add Name:="RNBMQuoteTableW", Range:=BookmarkRange
If SmartCutPasteWasOnB = True Then
    Options.SmartCutPaste = True
End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...