Возникли проблемы при создании и форматировании таблиц Word из Excel VBA - PullRequest
0 голосов
/ 19 июня 2019

Я новичок в MS Word VBA и у меня проблемы с манипулированием документами Word из Excel.

Самая большая проблема на данный момент: коды, которые работают в Word VBA, просто не работают в Excel. Очень странно и расстраивает.

Ниже приведены коды:

Sub abc()
Dim MSWordApp As Object, MSWordDoc As Object

    Set MSWordApp = CreateObject("Word.Application")
    Set MSWordDoc = MSWordApp.Documents.Add
    MSWordApp.Visible = True
    With MSWordDoc
        With .PageSetup
            .TopMargin = Application.CentimetersToPoints(0.51)
            .BottomMargin = Application.CentimetersToPoints(0.51)
            .LeftMargin = Application.CentimetersToPoints(0.51)
            .RightMargin = Application.CentimetersToPoints(0.51)
        End With
        .Tables.Add Range:=.Range(0, 0), NumRows:=3, NumColumns:=2
        With .Tables(1)
            .Rows.Alignment = wdAlignRowCenter
            .Rows.HeightRule = wdRowHeightExactly
            .Rows.Height = Application.CentimetersToPoints(9.55)
            .Columns.PreferredWidthType = wdPreferredWidthPoints
            .Columns.PreferredWidth = Application.CentimetersToPoints(9.9)
        End With
    End With

    MSWordApp.Activate
    Set MSWordApp = Nothing
    Set MSWordDoc = Nothing
End Sub

Эти коды прекрасно работают в MS Word (конечно, я изменил имена объектов и т. Д., Когда я использую их в MS Word).

Однако в Excel происходят странные вещи:

1) ".Rows.Alignment = wdAlignRowCenter" просто не работает вообще. Таблица Rows.Alignment of Word просто остается по умолчанию.

2) «.Columns.PreferredWidthType = wdPreferredWidthPoints» вызывает ошибку в Excel. Он отлично работает в Word; хотя в Excel при каждом вызове этого свойства будет появляться пустое сообщение об ошибке. Понятия не имею, почему ...

Ответы [ 2 ]

0 голосов
/ 20 июня 2019

Поскольку ваш код написан для использования с поздним связыванием, вам НЕ следует добавлять ссылку на Word.Вместо этого вам нужно либо определить, либо заменить используемые вами константы Word.Например, вместо:

.Rows.Alignment = wdAlignRowCenter
.Rows.HeightRule = wdRowHeightExactly

вы можете использовать:

.Rows.Alignment = 1  '1=wdAlignRowCenter
.Rows.HeightRule = 2 '2=wdRowHeightExactly

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

Dim MSWordApp As Object, MSWordDoc As Object

вы добавите:

Const wdAlignRowCenter as Long = 1: Const wdRowHeightExactly as Long = 2

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

Dim MSWordApp As Object, MSWordDoc As Object

    Set MSWordApp = CreateObject("Word.Application")
    Set MSWordDoc = MSWordApp.Documents.Add

вы можете использовать:

Dim MSWordApp As New Word.Application, MSWordDoc As Word.Document

    Set MSWordDoc = MSWordApp.Documents.Add
0 голосов
/ 19 июня 2019

При управлении Microsoft Word из Excel VBA необходимо добавить ссылку на библиотеку объектов Microsoft Word.Для этого убедитесь, что вы находитесь на своем модуле в окне VBA, а затем нажмите Tools, а затем References....Во всплывающем окне прокрутите вниз, чтобы найти «Библиотеку объектов Microsoft Word XX.X».Версия # зависит от того, что вы установили.

Add reference to Word object library

Если его нет в списке, вы можете найти его на своем жестком диске.нажмите кнопку «Обзор ...» и перейдите в папку с файлами программы, в которой установлен MS Word, затем выберите файл с именем «MSWORD.OLB».

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