Форматирование аналогичных таблиц MS Word (вставлено из MS Excel) в пакетном режиме

0

У меня есть много похожих таблиц (одинаковые размеры, разные числа) в Microsoft Excel, например:

One of twelve spreadsheets

Чтобы представить их в своем отчете в Microsoft Word, я должен отформатировать их следующим образом:

Formatted table in Word

Чтобы избежать бессмысленных повторений, я записал макрос. Однако при попытке выполнить макрос произошла ошибка: ошибка «5991». Это говорит о том, что невозможно получить доступ к отдельным линиям из-за вертикального слияния.

Поскольку я почти ничего не знаю об отладке в VBA, я не могу отладить ее сам за короткий период. Записанный макрос:

Sub Macro1()
'
' Macro1 Macro
'
'
    Selection.Borders(wdBorderTop).LineStyle = wdLineStyleNone
    Selection.Borders(wdBorderLeft).LineStyle = wdLineStyleNone
    Selection.Borders(wdBorderBottom).LineStyle = wdLineStyleNone
    Selection.Borders(wdBorderRight).LineStyle = wdLineStyleNone
    Selection.Borders(wdBorderHorizontal).LineStyle = wdLineStyleNone
    Selection.Borders(wdBorderVertical).LineStyle = wdLineStyleNone
    Selection.Borders(wdBorderDiagonalDown).LineStyle = wdLineStyleNone
    Selection.Borders(wdBorderDiagonalUp).LineStyle = wdLineStyleNone
    With Selection.Borders(wdBorderBottom)
        .LineStyle = Options.DefaultBorderLineStyle
        .LineWidth = Options.DefaultBorderLineWidth
        .Color = Options.DefaultBorderColor
    End With
    With Selection.Borders(wdBorderTop)
        .LineStyle = Options.DefaultBorderLineStyle
        .LineWidth = Options.DefaultBorderLineWidth
        .Color = Options.DefaultBorderColor
    End With
    With Selection.Borders(wdBorderBottom)
        .LineStyle = Options.DefaultBorderLineStyle
        .LineWidth = Options.DefaultBorderLineWidth
        .Color = Options.DefaultBorderColor
    End With
    Selection.Borders(wdBorderTop).LineStyle = wdLineStyleNone
    Selection.Borders(wdBorderLeft).LineStyle = wdLineStyleNone
    Selection.Borders(wdBorderBottom).LineStyle = wdLineStyleNone
    Selection.Borders(wdBorderRight).LineStyle = wdLineStyleNone
    Selection.Borders(wdBorderVertical).LineStyle = wdLineStyleNone
    Selection.Borders(wdBorderDiagonalDown).LineStyle = wdLineStyleNone
    Selection.Borders(wdBorderDiagonalUp).LineStyle = wdLineStyleNone
    With Selection.Borders(wdBorderBottom)
        .LineStyle = Options.DefaultBorderLineStyle
        .LineWidth = Options.DefaultBorderLineWidth
        .Color = Options.DefaultBorderColor
    End With
    With Selection.Borders(wdBorderBottom)
        .LineStyle = Options.DefaultBorderLineStyle
        .LineWidth = Options.DefaultBorderLineWidth
        .Color = Options.DefaultBorderColor
    End With
    With Selection.Borders(wdBorderBottom)
        .LineStyle = Options.DefaultBorderLineStyle
        .LineWidth = Options.DefaultBorderLineWidth
        .Color = Options.DefaultBorderColor
    End With
    Windows("Document1").Activate
    Windows("Document2").Activate
    With Selection.Borders(wdBorderBottom)
        .LineStyle = Options.DefaultBorderLineStyle
        .LineWidth = Options.DefaultBorderLineWidth
        .Color = Options.DefaultBorderColor
    End With
    Selection.Font.Name = "Times New Roman"
    Selection.Font.Size = 10
    Selection.EscapeKey
End Sub
Sub MiseEnPage()
'
' MiseEnPage Macro
' FormatATableInWord
' 

'
    Selection.Tables(1).Style = "Tableau simple 4"
    With Selection.Tables(1)
        .TopPadding = CentimetersToPoints(0)
        .BottomPadding = CentimetersToPoints(0)
        .LeftPadding = CentimetersToPoints(0.05)
        .RightPadding = CentimetersToPoints(0.05)
        .Spacing = 0
        .AllowPageBreaks = True
        .AllowAutoFit = True
    End With
    Selection.Tables(1).AutoFitBehavior (wdAutoFitContent)
    Selection.Tables(1).AutoFitBehavior (wdAutoFitContent)
    Selection.EscapeKey
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.Rows.Delete
    Selection.Tables(1).Select
    Selection.Tables(1).Delete
End Sub
Sub TableFormatting()
'
' TableFormatting Macro
'
'
    Selection.Tables(1).AutoFitBehavior (wdAutoFitContent)
    Selection.Tables(1).AutoFitBehavior (wdAutoFitContent)
    Selection.Tables(1).Style = "Tableau simple 4"
    Selection.Font.Size = 10
    Selection.Font.Name = "Times New Roman"
    Selection.Font.Size = 12
    Selection.Font.Size = 12
    With Selection.Borders(wdBorderBottom)
        .LineStyle = Options.DefaultBorderLineStyle
        .LineWidth = Options.DefaultBorderLineWidth
        .Color = Options.DefaultBorderColor
    End With
    With Selection.Borders(wdBorderTop)
        .LineStyle = Options.DefaultBorderLineStyle
        .LineWidth = Options.DefaultBorderLineWidth
        .Color = Options.DefaultBorderColor
    End With
    With Selection.Borders(wdBorderBottom)
        .LineStyle = Options.DefaultBorderLineStyle
        .LineWidth = Options.DefaultBorderLineWidth
        .Color = Options.DefaultBorderColor
    End With
    With Selection.Borders(wdBorderBottom)
        .LineStyle = Options.DefaultBorderLineStyle
        .LineWidth = Options.DefaultBorderLineWidth
        .Color = Options.DefaultBorderColor
    End With
    With Selection.Borders(wdBorderBottom)
        .LineStyle = Options.DefaultBorderLineStyle
        .LineWidth = Options.DefaultBorderLineWidth
        .Color = Options.DefaultBorderColor
    End With
    Selection.EscapeKey
    Selection.Tables(1).Rows(2).SetHeight RowHeight:=20.55, HeightRule:= _
        wdRowHeightAtLeast
    With Selection.Borders(wdBorderBottom)
        .LineStyle = Options.DefaultBorderLineStyle
        .LineWidth = Options.DefaultBorderLineWidth
        .Color = Options.DefaultBorderColor
    End With
End Sub

Есть ли способ отформатировать таблицы в пакетном режиме?

Tough Kid
источник
Нет, нет возможности редактировать файлы Word в пакетном режиме. Пожалуйста, поделитесь своим макросом, а также опишите точно ошибку, чтобы мы могли помочь. «Я не могу отладить его сам за короткий период» - если время действительно важно для вас, то вам лучше нанять профессионала, поскольку здесь добровольцы отвечают на вопросы, которые им нравятся, когда у них есть время.
Máté Juhász
1
Спасибо за помощь. Я пересмотрел вопрос. Поскольку я новичок в SuperUser, я могу вставить только 2 ссылки здесь. Я обязан прямо вставить код и ошибку в тексте.
Tough Kid
1
К сожалению, слово VBA не всегда может правильно управлять таблицами. Попробуйте отформатировать таблицу уже в Excel и скопируйте ее в формате.
Máté Juhász
1
Спасибо за этот ответ, который заставляет меня понять, что я также могу отформатировать таблицу в Excel :-).
Tough Kid