Вставьте таблицу из Excel в Word, затем в Fit Window и равномерно распределите столбцы - PullRequest
0 голосов
/ 14 января 2019

Я пытаюсь скопировать и вставить таблицу из Excel в слово, но так как таблица больше листа, она выходит за границы страницы.

Я обнаружил, что .AutoFitBehavior (wdAutoFitWindow) помогает с этим, но он распределяет ширину столбца на основе информации в ячейках. Из-за этого некоторые столбцы очень тонкие и наоборот. Я бы предпочел, чтобы они распределялись равномерно, и менялся только размер строки.

Насколько мне известно .Tables(3).Columns.DistributeWidth должно помочь с равномерным распределением.

Однако мне не удается объединить эти две строки. В зависимости от варианта кода, я попробовал любой из них работает, но никогда не оба.

Моя текущая часть кода:

tbl.copy

Set objDoc = objWord.Documents.Add(Template:="whatever", NewTemplate:=False, DocumentType:=0)
With objDoc
    .Range.Bookmarks("lentele").Range.PasteExcelTable _
         LinkedToExcel:=False, _
         WordFormatting:=False, _
         RTF:=True
End With

Set WordTable = objDoc.Tables(3)
WordTable.AutoFitBehavior (wdAutoFitWindow)

With objDoc
    .Tables(3).Columns.DistributeWidth
End With

Дополнительный вопрос: было бы здорово, если бы весь текст во вставленной таблице был уменьшен до размера шрифта 8, но я получаю ошибку, тогда я ввожу эту строку objDoc.Tables(3).Font.Size = 8

1 Ответ

0 голосов
/ 14 января 2019

Если вы предварительно вставили в шаблон Word таблицу с соответствующим форматированием (без автоматической ширины) только с первой строкой таблицы (например, строкой заголовка или даже пустой строкой), вы можете использовать метод PasteAppendTable, что заставит добавленную таблицу принять одинаковую ширину столбца. Если для этого вам понадобится фиктивная строка, она может быть впоследствии удалена.

Тем не менее, сохраняя ваш текущий подход:

Set objDoc = objWord.Documents.Add(Template:="whatever", NewTemplate:=False, DocumentType:=0)
tbl.Copy
With objDoc.Range.Bookmarks("lentele").Range
    .PasteExcelTable _
         LinkedToExcel:=False, _
         WordFormatting:=False, _
         RTF:=True
    .End = .End + 1
    With .Tables(1)
        .Range.Font.Size = 8
        .AutoFitBehavior (wdAutoFitWindow)
        .AllowAutoFit = False
        .Columns.DistributeWidth
    End With
End With

Что касается ошибки - objDoc.Tables (3) .Range.Font.Size = 8

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