1

С Excel и Word 2013 и Windows 8:

По сути, у меня есть шаблон Excel, который я хочу обновить до шаблона Word. У меня есть около 20 таблиц в Word, которые предварительно отформатированы, и я хочу обновить эти столбцы из соответствующих им столбцов в Excel, но мне было очень трудно работать с таблицами vba и word.

Пытаясь скопировать диапазон в Excel, выберите соответствующий диапазон в Word, выбрав одну из двух закладок, и вставьте данные. Я получаю сообщение об ошибке «438»: объект не поддерживает это свойство или метод

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

Sub PopulateColumninWord()

Dim wdApp As Word.Application
Dim wdDoc As Document

Set wdApp = GetObject(, "Word.Application")
Set wdDoc = wdApp.ActiveDocument

Set rngStart = ActiveDocument.Bookmarks("Start").Range
Set rngEnd = ActiveDocument.Bookmarks("End").Range

ActiveSheet.Range("C2:C19").Select
Selection.Copy

With wdDoc
    .Range(rngStart.Start, rngEnd.End).Select
    .PasteAndFormat
End With

Set wdApp = Nothing
Set wdDoc = Nothing

End Sub

1 ответ1

1

В этом примере будут скопированы ячейки A1:A2 из Excel в Word

Использование закладок

Sub PopulateColumninWord()

    Dim wdApp  As Object
    Set wdApp = GetObject(, "Word.Application")
    Set wdDoc = wdApp.ActiveDocument

    'Read in position of two bookmarks named START and END
    Set rngStart = wdDoc.Bookmarks("Start").Range
    Set rngEnd = wdDoc.Bookmarks("End").Range

    'Copy range from Excel to Word
    ThisWorkbook.Sheets(1).Range("A1:A2").Copy
    wdDoc.Range(rngStart.End + 1, rngEnd.Start - 1).PasteAndFormat (22)

    Set wdApp = Nothing
    Set wdDoc = Nothing

End Sub

Использование таблиц в Word

Sub PopulateColumninWord()

    Dim wdApp  As Object
    Set wdApp = GetObject(, "Word.Application")
    Set wdDoc = wdApp.ActiveDocument

    'Copy range from Excel to Word
    ThisWorkbook.Sheets(1).Range("A1:A2").Copy
    wdDoc.Range(wdDoc.Tables(1).Cell(1, 1).Range.Start, _
                wdDoc.Tables(1).Cell(2, 1).Range.End).PasteAndFormat (22)

    'Copy single cell from Excel to Word
    ThisWorkbook.Sheets(1).Cells(1, 2).Copy
    wdDoc.Tables(1).Cell(1, 2).Range.PasteAndFormat (22)

    Set wdApp = Nothing
    Set wdDoc = Nothing

End Sub

Полезные дальнейшие ссылки

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .