2017-01-03 10 views
0

Я работаю над макросом, который будет отображаться через открытые в настоящее время секции документа по одному, проверьте, являются ли они портретными или альбомными, и задайте их поля (включая верхний и нижний колонтитулы) для заданных размеров (которые различаются в зависимости от страницы ориентация).Как проверить ориентацию каждого последовательного раздела?

Как определить ориентацию страницы каждого раздела и сделать ее текущим «выбором» или поместить курсор в начало, чтобы следующая строка могла установить свои поля и перейти к следующему разделу?

Это то, что я до сих пор:

Sub Margins() 
    Dim nOriginalPagination  As Integer 
    Dim objSection    As Section 
    Dim nPaperSize    As Integer 
    Dim ContinueOn    As Boolean 

    ContinueOn = False 
    nNumSects = ActiveDocument.Sections.Count 

    ActiveWindow.View.Type = wdPageView 

    If ActiveWindow.View.SeekView <> wdSeekMainDocument Then 
     ActiveWindow.View.SeekView = wdSeekMainDocument 
    End If 

    Selection.HomeKey wdStory, wdMove 

    For Each objSection In objDocument.Sections 
     iSecNum = Selection.Information(wdActiveEndSectionNumber) 
     With objSection.PageSetup 
      nPaperSize = PAPERLETTER  
     End With 
    Next 

    For Each objSection In objDocument.Sections 
     iSecNum = Selection.Information(wdActiveEndSectionNumber) 
     With objSection.PageSetup 
      'Set the margins, depending on the page orientation 
      If .Orientation = wdOrientPortrait Then 
       .TopMargin = CentimetersToPoints(2.23) 
       .BottomMargin = CentimetersToPoints(2.21) 
       .LeftMargin = CentimetersToPoints(3.17) 
       .RightMargin = CentimetersToPoints(3.17) 
       .HeaderDistance = CentimetersToPoints(0.96) 
       .FooterDistance = CentimetersToPoints(0.94) 
      Else 
       .TopMargin = CentimetersToPoints(3.17) 
       .BottomMargin = CentimetersToPoints(3.17) 
       .LeftMargin = CentimetersToPoints(2.21) 
       .RightMargin = CentimetersToPoints(2.23) 
       .HeaderDistance = CentimetersToPoints(1.9) 
       .FooterDistance = CentimetersToPoints(1.9) 
      End If 
     End With 

     Application.ScreenUpdating = True 
     Options.Pagination = nOriginalPagination 

     Selection.GoTo what:=wdGoToSection, Which:=wdGoToNext 

    Next 

End Sub 

Ошибка говорит, что я не хватает в качестве объекта.

+0

https://msdn.microsoft.com/en-us/library/office/ff821149.aspx – Absinthe

+0

Вы должны сначала показать нам, что вы пробовали. Вы читали [спросить]? –

ответ

0

Ваш код имеет несколько вопросов:

  • необъявленные переменные
  • ненужного использования объекта Selection
  • ScreenUpdating быть включено, не будучи выключена

Линии, которая вызывает погрешность составляет:

For Each objSection In objDocument.Sections 

Это связано с тем, что необъявленная переменная objDocument не установлена ​​ни на что. код вам нужно ниже:

Sub Margins() 
    Dim objDocument as Document 
    Dim objSection As Section 

    Application.ScreenUpdating = False 

    Set objDocument = ActiveDocument 
    For Each objSection In objDocument.Sections 
     With objSection.PageSetup 
      'Set the margins, depending on the page orientation 
      If .Orientation = wdOrientPortrait Then 
       .TopMargin = CentimetersToPoints(2.23) 
       .BottomMargin = CentimetersToPoints(2.21) 
       .LeftMargin = CentimetersToPoints(3.17) 
       .RightMargin = CentimetersToPoints(3.17) 
       .HeaderDistance = CentimetersToPoints(0.96) 
       .FooterDistance = CentimetersToPoints(0.94) 
      Else 
       .TopMargin = CentimetersToPoints(3.17) 
       .BottomMargin = CentimetersToPoints(3.17) 
       .LeftMargin = CentimetersToPoints(2.21) 
       .RightMargin = CentimetersToPoints(2.23) 
       .HeaderDistance = CentimetersToPoints(1.9) 
       .FooterDistance = CentimetersToPoints(1.9) 
      End If 
     End With 
    Next 

    Application.ScreenUpdating = True 

End Sub 

 Смежные вопросы

  • Нет связанных вопросов^_^