Страница: 1 |
Страница: 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 и кнопкой
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