Word Macro - установить ориентацию выбранной страницы - PullRequest
0 голосов
/ 06 мая 2020

Я пытаюсь создать макрос, в котором пользователи могут выбрать таблицу в документе и переключить ориентацию указанной c страницы на альбомную. Я пробовал как записывать выполнение действия, так и сам писать макрос, но он никогда не работал должным образом. Это так близко, как я получил, но он делает страницу, на которой находится таблица, и все, что до нее, ландшафтное.

Sub TableLandscape()
'
' TableLandscape Macro
'
'
    'Selection.Collapse Direction:=wdCollapseEnd
    'Selection.InsertBreak Type:=wdSectionBreakContinuous
    'ActiveDocument.Range(Start:=Selection.Start, End:=Selection.Start).Collapse Direction:=wdCollapseStart

    'Selection.InsertBreak _
         Type:=wdSectionBreakNextPage
    Selection.Start = Selection.Start + 1

    ActiveDocument.Range(Start:=Selection.End, End:=Selection.End).InsertBreak _
         Type:=wdSectionBreakNextPage

    With Selection.PageSetup
        .LineNumbering.Active = False
        .Orientation = wdOrientLandscape
        .TopMargin = InchesToPoints(1)
        .BottomMargin = InchesToPoints(1)
        .LeftMargin = InchesToPoints(1)
        .RightMargin = InchesToPoints(1)
        .Gutter = InchesToPoints(0)
        .HeaderDistance = InchesToPoints(0.6)
        .FooterDistance = InchesToPoints(0.5)
        .PageWidth = InchesToPoints(11)
        .PageHeight = InchesToPoints(8.5)
        .FirstPageTray = wdPrinterDefaultBin
        .OtherPagesTray = wdPrinterDefaultBin
        .SectionStart = wdSectionContinuous
        .OddAndEvenPagesHeaderFooter = False
        .DifferentFirstPageHeaderFooter = False
        .VerticalAlignment = wdAlignVerticalTop
        .SuppressEndnotes = False
        .MirrorMargins = False
        .TwoPagesOnOne = False
        .BookFoldPrinting = False
        .BookFoldRevPrinting = False
        .BookFoldPrintingSheets = 1
        .GutterPos = wdGutterPosLeft
    End With

    'ActiveDocument.Range(Start:=Selection.End, End:=Selection.End).InsertBreak _
         'Type:=wdSectionBreakNextPage

End Sub

1 Ответ

0 голосов
/ 07 мая 2020

Вот как это сделать:

Sub RotatePage()
    Dim TableRange As Range, TableStart As Range, TableEnd As Range
    Set TableRange = Selection.Tables(1).Range
    Set TableStart = TableRange.Duplicate
    With TableStart
        .SetRange Start:=TableStart.Start - 1, End:=TableStart.End
        .Collapse Direction:=wdCollapseStart
        .InsertBreak Type:=wdSectionBreakNextPage
    End With
    Set TableEnd = TableRange.Duplicate
    With TableEnd
        .SetRange Start:=TableEnd.Start, End:=TableEnd.End + 1
        .Collapse Direction:=wdCollapseEnd
        .InsertBreak Type:=wdSectionBreakNextPage
    End With
    TableRange.PageSetup.Orientation = wdOrientLandscape
End Sub
...