Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: VBA.Word. Двухстраничная печать Добавлено: 24.10.07 08:59  

Автор вопроса:  Mikle
Замысел такой: программа распечатывает вначале все нечетные страницы, а затем, после переворота – все четные (в обратном порядке).

Sub ПечатьДвухстраничная()
' 24.10.2007
 Dim i As Integer, i1 As Integer, iK As Integer, s As String
 i1 = 1: iK = 20
 For i = i1 To iK - 1 Step 2
  s = Trim(Str(i))
  Application.PrintOut FileName:="", Range:=wdPrintRangeOfPages, _
              Item:=wdPrintDocumentContent, Copies:=1, Pages:=s, _
              PageType:=wdPrintAllPages, ManualDuplexPrint:=False, _
              Collate:=True, Background:=True, PrintToFile:=False, _
              PrintZoomColumn:=0, PrintZoomRow:=0, PrintZoomPaperWidth:=0, _
              PrintZoomPaperHeight:=0
 Next i
 A = MsgBox("Переверните пачку, и вставте в приемный лоток", , "ПЕЧАТЬ двухсторонняя")
 For i = iK To i1 + 1 Step -2
  s = Trim(Str(i))
  Application.PrintOut FileName:="", Range:=wdPrintRangeOfPages, _
              Item:=wdPrintDocumentContent, Copies:=1, Pages:=s, _
              PageType:=wdPrintAllPages, ManualDuplexPrint:=False, _
              Collate:=True, Background:=True, PrintToFile:=False, _
              PrintZoomColumn:=0, PrintZoomRow:=0, PrintZoomPaperWidth:=0, _
              PrintZoomPaperHeight:=0
 Next i
End Sub

Но при запуске сразу выскакивает на MsgBox, не напечатав ни одной страницы, потом (после "ОК") «утюжит» в таком порядке (стр. 21…40):
38, 36, 34, 32, 30, 21, 28, 23, 25, 27 29, 31, 33, 35, 37, 39, 40, 26, 24, 22
Хотя задумывалось, в таком:
21, 23, 25, 27, 29, 31, 33, 35, 37, 39 40, 38, 36, 34, 32, 30, 28, 26, 24, 22

Эксперимент 2 (стр. 1…20)
18, 16, 14, 12, 10, 8, 1, 3, 5, 7 9, 11, 13, 15, 17, 19, 20, 6, 4, 2
Вместо:
 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 20, 18, 16, 14, 12, 10, 8, 6, 4, 2
Помогите что-нибудь предпринять!

Ответить

  Ответы Всего ответов: 1  

Номер ответа: 1
Автор ответа:
 bi-lya



Вопросов: 1
Ответов: 125
 Профиль | | #1 Добавлено: 25.10.07 01:26
Сделайте формочку с двумя OptionButton и кнопкой
Private Sub CommandButton1_Click()

  pageNam = ActiveDocument.ActiveWindow.Panes(1).Pages.Count
  
  If OptionButton1.Value = True Then
    str_nach = 1
    str_kon = pageNam
    shag = 2
  Else
    If pageNam Mod 2 <> 0 Then
      pageNam = pageNam - 1
      MsgBox "Количество страниц нечетное - уберите последний лист!"
    End If
    str_nach = pageNam
    str_kon = 1
    shag = -2
  End If
  
  For s = str_nach To str_kon Step shag
    Application.PrintOut Range:=wdPrintRangeOfPages, _
      Item:=wdPrintDocumentContent, Pages:=CStr(s)
  Next

End Sub

Ну а предупреждение о том, что нужно перевернуть можно вытащить на лэйбл при переключении на OptionButton2
:)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам