Формат таблицы в слове после копирования из Excel через VBA - PullRequest
0 голосов
/ 03 февраля 2019

Я хотел бы скопировать текст из Excel в файл Word, добавить разрыв страницы между (между строками 50 и 51) и отформатировать таблицу в файле Word, настроить ширину таблицы на странице документа Word..

Я пробовал методы InsertBreak и SetWidth, но каким-то образом выдает ошибки (синтаксис или объект не определены).

Sub Button1()    
Dim wd As Object    
Worksheets("1").Activate    
Range("C15:C73").Copy    
Set wd = CreateObject("word.application")    
wd.documents.Add    
wd.Visible = True    
wd.activedocument.Range.Pasteexceltable False, False, True    

Worksheets("2").Activate    

End Sub     

Выше приведен код, который я сейчас использую, который работает, но в него не вставлен разрыв страницы после строки 50, и таблица не отформатирована правильно, т. Е. Столбец слишком широкий.

Isкто-то может быть так любезен, чтобы помочь / направить меня в правильном направлении?

1 Ответ

0 голосов
/ 04 февраля 2019

Попробуйте этот код и настройте его под свои нужды:

Sub Button1()  

    ' Define object variables
    Dim wordObject As Object
    Dim wordDocument As Object
    Dim wordTable As Object
    Dim rangeToCopy As Range

    ' Define other variables
    Dim sheetName As String
    Dim rangeAddress As String
    Dim rowToInsertBreak As Integer

    ' >>>>>Customize
    sheetName = "Sheet1" ' Sheet name in Excel
    rangeAddress = "C15:C73" ' Range in Excel to copy from
    rowToInsertBreak = 25 ' (index starts at 0 and first row is the header

    ' Initiate word object
    Set wordObject = CreateObject("Word.Application")

    ' Add a new document
    Set wordDocument = wordObject.Documents.Add

    ' Make the window visible
    wordObject.Visible = True

    ' Define the range to copy
    Set rangeToCopy = ThisWorkbook.Worksheets(sheetName).Range(rangeAddress)

    ' Copy the range
    rangeToCopy.Copy

    ' Paste it into word
    wordDocument.Paragraphs(1).Range.PasteExcelTable _
        LinkedToExcel:=False, _
        WordFormatting:=False, _
        RTF:=False

    ' Reference the table we just pasted
    Set wordTable = wordDocument.Tables(1)

    ' Autofit the table
    wordTable.AutoFitBehavior 2 ' wdAutoFitWindow: Check https://docs.microsoft.com/en-us/previous-versions/office/developer/office-2003/aa211923(v%3Doffice.11)

    ' Insert the page break after row
    wordTable.Rows(rowToInsertBreak).Range.InsertBreak Type:=7 ' wdPageBreak

    ' Clear The Clipboard
    Application.CutCopyMode = False

End Sub

Вот несколько ссылок, которые вы бы проверили:

Как правильно копировать и вставлять таблицы Excel в слово:
https://www.thespreadsheetguru.com/blog/2014/5/22/copy-paste-an-excel-table-into-microsoft-word-with-vba
Примечание: часто лучше использовать слово в качестве ссылки

Как обрабатывать разрывы страниц в таблицах Word:
https://shaunakelly.com/word/styles/page-breaks-in-tables.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...