Formatowanie podobnych MSWord (wklejonych z MSExcel) tabel w partii

0

Mam wiele podobnych arkuszy kalkulacyjnych (takie same wymiary, różne liczby) w programie Microsoft Excel, jak poniżej:

One of twelve spreadsheets

Aby przedstawić je w moim raporcie w programie Microsoft Word, muszę je sformatować w ten sposób:

Formatted table in Word

Aby uniknąć bezsensownych powtórzeń, nagrałem makro. Jednak podczas próby wykonania makra wystąpił błąd: Błąd „5991”. Mówi się, że dostęp do niektórych pojedynczych linii jest niemożliwy z powodu jakiejś fuzji pionowej.

Ponieważ prawie nic nie wiem o debugowaniu w VBA, nie mogę sam go debugować w krótkim czasie. Nagrane makro to:

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

Czy jest jakiś sposób na sformatowanie tabel w partii?

Tough Kid
źródło
Nie, nie ma możliwości edycji plików Worda wsadowo. Podziel się swoim makro i opisz dokładnie błąd, abyśmy mogli pomóc. „Nie mogę sam go debugować w krótkim czasie” - jeśli czas jest naprawdę ważny dla ciebie, lepiej zatrudnij profesjonalistę, ponieważ tutaj wolontariusze odpowiadają na pytania, które lubią, kiedy mają czas.
Máté Juhász
1
Dziękuję za pomoc. Poprawiłem pytanie. Ponieważ jestem nowym użytkownikiem SuperUser, mogę tutaj wkleić tylko 2 linki. Jestem zobowiązany do bezpośredniego wklejenia kodu i błędu w zwykłym tekście.
Tough Kid
1
Niestety słowo VBA nie zawsze może poprawnie zarządzać tabelami. Spróbuj sformatować swoją tabelę już w Excelu i skopiuj ją sformatowaną.
Máté Juhász
1
Dziękuję za odpowiedź, która uświadomiła mi, że mogę również sformatować tabelę w Excelu :-).
Tough Kid