Excel VBA не всегда форматирует поля таблицы - PullRequest
0 голосов
/ 01 октября 2018

У меня есть форма Excel, которая откроет MS Word и перейдет к шестой таблице и отрегулирует поля ячеек.Я хочу, чтобы поля для левой и правой ячеек равнялись 0,08 для всей таблицы.

https://i.stack.imgur.com/VvYJY.jpg

Она отлично работает при первом запуске формы, но во второй раз и после ее выигрыша.не делай этогоВот мой кодМожет кто-нибудь сказать мне, почему это произошло?

Public Sub Table()

    Dim wrdApp
    Dim wrdDoc
    Set wrdApp = CreateObject("Word.Application")
    wrdApp.Visible = False
    Set wrdDoc = wrdApp.Documents.Open("\\FileLocation")

    With wrdDoc
        'Goes to 6th table and selects it
        wrdApp.Selection.Goto wdGoToPage, wdGoToAbsolute, 1
        wrdApp.Selection.Goto What:=wdGoToTable, Which:=GoToNext
        wrdApp.Selection.Goto What:=wdGoToTable, Which:=GoToNext
        wrdApp.Selection.Goto What:=wdGoToTable, Which:=GoToNext
        wrdApp.Selection.Goto What:=wdGoToTable, Which:=GoToNext
        wrdApp.Selection.Goto What:=wdGoToTable, Which:=GoToNext
        wrdApp.Selection.Goto What:=wdGoToTable, Which:=GoToNext
        wrdApp.Selection.Tables(1).Select


        With wrdApp.Selection.Tables(1)
            .TopPadding = InchesToPoints(0)
            .BottomPadding = InchesToPoints(0)
            .LeftPadding = InchesToPoints(0.08)
            .RightPadding = InchesToPoints(0.08)
            .Spacing = 0
            .AllowPageBreaks = True
            .AllowAutoFit = True
        End With

End Sub

1 Ответ

0 голосов
/ 01 октября 2018

Почему вы используете wrdApp.Selection.Goto What:=wdGoToTable, Which:=GoToNext?Почему бы не Set wrdTbl = wrdDoc.Tables(6) и работать с этим?Весь этот код может ссылаться на другую таблицу?

Попробуйте что-то вроде этого:

Private Sub Sample()   
    Dim wrdApp As Object, wrdDoc As Object, wrdTbl As Object

    Set wrdApp = CreateObject("Word.Application")
    wrdApp.Visible = False

    Set wrdDoc = wrdApp.Documents.Open("\\FileLocation")

    Set wrdTbl = wrdDoc.Tables(6)

    With wrdTbl
        .TopPadding = wrdApp.InchesToPoints(0)
        .BottomPadding = wrdApp.InchesToPoints(0)
        .LeftPadding = wrdApp.InchesToPoints(0.08)
        .RightPadding = wrdApp.InchesToPoints(0.08)
        .Spacing = 0
        .AllowPageBreaks = True
        .AllowAutoFit = True
    End With    
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...