Форум по VBA, Excel и Word

Word => Макросы в Word => Тема начата: jfd от 05 апреля 2016, 10:52

Название: Excel Word Макросы: Вставить из буфера в Word
Отправлено: jfd от 05 апреля 2016, 10:52
Добрый день, никак не удается вставить из буфера картинку в ячейку word-таблицы. В буфер картинка попала при выполнении макроса в Excel.
Использование макроредактора дает такой метод вставки содержимого буфера - PasteAndFormat (wdPasteDefault), но почему-то не работает.
Подскажите в чем дело может быть?

Название: Re: Excel Word Макросы: Вставить из буфера в Word
Отправлено: Администратор от 05 апреля 2016, 11:13
А если без макроса вставлять, например, сочетанием клавиш Ctrl + V, то вставляется картинка?
Название: Re: Excel Word Макросы: Вставить из буфера в Word
Отправлено: jfd от 05 апреля 2016, 11:14
Да вставляется картинка.
Причем выделить нужную word-ячейку получается, а вставить в нее нет:

Set WA = CreateObject("Word.Application")
Set WD = WA.Documents.Open(wb.Path & xxxx.docx")

WD.Tables(1).Cell(1, 1).Select

Название: Re: Excel Word Макросы: Вставить из буфера в Word
Отправлено: Администратор от 05 апреля 2016, 11:30
Нужно вставить из эксель в ворд?
Название: Re: Excel Word Макросы: Вставить из буфера в Word
Отправлено: jfd от 05 апреля 2016, 11:31
Если это принципиальный момент то да, но картинка в буфере, но она там может оказаться как результат того же PrintScreen'а.
Название: Re: Excel Word Макросы: Вставить из буфера в Word
Отправлено: Администратор от 05 апреля 2016, 11:33
Напишите строку кода, которую вы используете, чтобы вставить в ворд.
Название: Re: Excel Word Макросы: Вставить из буфера в Word
Отправлено: Администратор от 05 апреля 2016, 11:39
Я скопировал в экселе рисунок вручную (Ctrl + C). Затем я перешёл в ворд и там вставил рисунок таким кодом:
Sub Макрос1()
    Selection.PasteAndFormat (wdFormatOriginalFormatting)
End Sub

Можете проделать такие же действия? Получилось у вас вставить?
Название: Re: Excel Word Макросы: Вставить из буфера в Word
Отправлено: jfd от 05 апреля 2016, 11:43
Да, получилось вставить, как вы описали.

Я вот так пишу макрос по вставке:
WD.Tables(1).Cell(1, 1).Select

И варианты:
WD.Selection.PasteAndFormat (wdPasteDefault)
WD.ActiveDocument.Selection.PasteAndFormat (wdPasteDefault)
WD.ThisDocument.Selection.PasteAndFormat (wdPasteDefault)
WA.ActiveDocument.Selection.PasteAndFormat (wdPasteDefault)
WA.ThisDocument.Selection.PasteAndFormat (wdPasteDefault)



Название: Re: Excel Word Макросы: Вставить из буфера в Word
Отправлено: Администратор от 05 апреля 2016, 11:54
Вариант без выделения. Код написан для использования в самом ворде, а не в экселе. Если вам нужно именно с выделением, то тогда нужно будет подумать, что сделать, но пока я считаю, что выделение нет смысла использовать.
Sub Макрос2()
    Dim doc As Document
    Set doc = ActiveDocument
    doc.Tables(1).Cell(1, 1).Range.PasteAndFormat wdPasteDefault
End Sub

Что касается вашего кода. WD у вас это объект "Word.Document". У объекта "Document" нет членов "Selection", "ActiveDocument" и "ThisDocument" поэтому ваши коды неправильные.

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

Название: Re: Excel Word Макросы: Вставить из буфера в Word
Отправлено: jfd от 05 апреля 2016, 12:03
Вот WD.Tables(1).Cell(1, 1).Range.PasteAndFormat wdPasteDefault это сработало.
Спасибо!