2015-11-09 7 views
0

Я искал справедливый бит на этом и других форумах, но я не могу заставить код работать. Я знаю, что это ошибка пользователя - я изучаю/самоучка на этом.Вставка таблицы в открытый документ Word по закладке

Я хочу скопировать (правда, большую) таблицу в конкретный рабочий лист Excel в уже открытый документ Word в определенной точке. Я видел это, используя поиск по ключевым словам, но я бы предпочел использовать закладку (и я сделал работу с закладкой!) Исключительно потому, что она не видна конечному пользователю. Я пытаюсь максимально автоматизировать создание документа.

Приведенный ниже код работает, но я могу заставить его работать только тогда, когда документ Word закрыт. Если я попытаюсь запустить этот суб, когда слово doc открыто, оно просто пытается его снова открыть и, конечно же, не сможет. Я не могу найти аккуратный бит кода, который позволяет мне вставлять данные в уже открытый документ.

Кроме того, я могу сделать эту работу для одного значения, но не для диапазона (т. Е. Таблицы, которую я хочу вставить).

Sub ExcelRangeToWord() 


Dim objWord As Object 
Dim ws As Worksheet 

    Set ws = ThisWorkbook.Sheets("Summary") 
    Set objWord = CreateObject("Word.Application") 

    objWord.Visible = True 


'Optimize Code 
    Application.ScreenUpdating = False 
    Application.EnableEvents = False 


    'open the word doc 
     objWord.Documents.Open "K:\Exeter Office\Quotebuilder project\testbed\test.docx" 'change as required 


'pastes the value of cell I19 at the "heatlosses" bookmark 
    With objWord.ActiveDocument 
     .Bookmarks("heatlosses").Range.Text = ws.Range("I19").Value 
    End With 

'Optimize Code 
Set objWord = Nothing 
    Application.ScreenUpdating = True 
    Application.EnableEvents = True 

'Clear The Clipboard 
    Application.CutCopyMode = False 

End Sub 

Я пытаюсь решить этот шаг в то время, потому то у меня есть малейший шанс понимания вещи немного лучше ...

Если я пытаюсь копировать/вставить диапазон, а не только одного значения, я использую CurrentRegion, чтобы выбрать все используемые клетки, окружающие B19:

With objWord.ActiveDocument 
     .Bookmarks("heatlosses").Range.Text = Range("B19").CurrentRegion 
    End With 

Все это делает вставить слово «Правда» в Word.

Я сбит с толку. Пожалуйста, может кто-нибудь предложить помощь?

+0

Эта ссылка должна помочь вам: http://www.ozgrid.com/forum/showthread.php?t=148798&p=535255#post535255 – R3uK

ответ

0

Используйте приведенный ниже код, чтобы добиться того, что вам требуется:

Sub CopyToWord() 

    Dim wApp, wDoc 

    'Get the running word application 
    Set wApp = GetObject(, "Word.Application") 

    'select the open document you want to paste into 
    Set wDoc = wApp.documents("test.docx") 

    'copy what you want to paste from excel 
    Sheet1.Range("A1").copy  

    'select the word range you want to paste into 
    wDoc.bookmarks("heatlosses").Select 

    'and paste the clipboard contents 
    wApp.Selection.Paste 

End Sub 
Смежные вопросы