Office中国论坛/Access中国论坛

标题: EXCEL文档打印设置 [打印本页]

作者: ycxchen    时间: 2011-5-1 15:29
标题: EXCEL文档打印设置
大家知道,WORD文档打印时,打印设置可进行单双页(奇偶页)打印选择,但同一打印机,在打印EXCEL文档时却无法进行奇偶页打印设置,请问,如何解决?
作者: pureshadow    时间: 2011-5-2 11:16
2007版和2010版可以设置。
2003版需要用代码了。
作者: 余方方    时间: 2011-5-2 16:35
Sub Excel双面打印()
    On Error Resume Next
    x = ExecuteExcel4Macro("Get.Document(50)")
    For I = 1 To Int(x / 2) + 1
        ActiveWindow.SelectedSheets.PrintOut From:=2 * I - 1, To:=2 * I - 1
    Next I
    MsgBox "放好纸回车继续打印另一面"
    For j = 1 To Int(x / 2) + 1
        ActiveWindow.SelectedSheets.PrintOut From:=2 * j, To:=2 * j
    Next j
End Sub


作者: ycxchen    时间: 2011-5-2 17:28
谢谢两位指教,我先试用!
作者: ycxchen    时间: 2011-5-2 17:38
3楼的不行,提示子过程或函数未定义, ExecuteExcel4Macro反相显示,加入Dim x, i As Integer也不行,如何办?
作者: roych    时间: 2011-5-2 22:52
O(∩_∩)O~,余方方童鞋漏掉了宏表函数(这部分内容实在太多了,改天再写两篇教程)那一部分了。正确的做法是:
第一步、建立宏表函数,按下Ctrl+F3,或者插入\名称\定义(2003版本),2007版本则在公式选项卡里。输入名称,例如PrintPages:
=Get.Document(50)
第二步、按下Alt+F11进入VBE界面,插入3L的代码。我这里改了下:
  1. Sub Excel双面打印()
  2.     On Error Resume Next
  3.     Dim x As Long
  4. '定义并激活工作表才能执行宏表函数
  5.     Dim wk As Worksheet
  6.     wk.Activate
  7.     x = ExecuteExcel4Macro("get.document(50)")
  8.     For i = 1 To Int(x / 2) + 1     ActiveWindow.SelectedSheets.PrintOut From:=2 * i - 1, To:=2 * i - 1
  9.     Next i
  10.     MsgBox "放好纸回车继续打印另一面"
  11.     For j = 1 To Int(x / 2) + 1    ActiveWindow.SelectedSheets.PrintOut From:=2 * j, To:=2 * j
  12.     Next j
  13. End Sub
复制代码

作者: ycxchen    时间: 2011-5-3 09:37
谢谢roych的热心指教!高手!
6楼的办法可以,不过,代码有两处要分行:
Sub Excel双面打印()

    On Error Resume Next

    Dim x As Long

'定义并激活工作表才能执行宏表函数

    Dim wk As Worksheet

    wk.Activate

    x = ExecuteExcel4Macro("get.document(50)")

    For i = 1 To Int(x / 2) + 1
    ActiveWindow.SelectedSheets.PrintOut From:=2 * i - 1, To:=2 * i - 1

    Next i

    MsgBox "放好纸回车继续打印另一面"

    For j = 1 To Int(x / 2) + 1
    ActiveWindow.SelectedSheets.PrintOut From:=2 * j, To:=2 * j

    Next j

End Sub
期望宏表函数教程的早日出现!
作者: roych    时间: 2011-5-3 14:19
本帖最后由 roych 于 2011-5-3 15:07 编辑

实际上不用分得很开的,只是粘贴代码时,俺不小心把For循环条件和执行语句放在一块儿了,纯属失误,不好意思。
此外,建议最好做成一个函数,然后再调用两次;或者第二次执行时先弹出确认对话框,修改后代码如下:
  1. Sub Excel双面打印()
  2.    On Error Resume Next
  3.     Dim x As Long
  4. '定义并激活工作表才能执行宏表函数
  5.     Dim wk As Worksheet
  6.     wk.Activate
  7.     x = ExecuteExcel4Macro("get.document(50)")
  8.     For i = 1 To Int(x / 2) + 1
  9.     ActiveWindow.SelectedSheets.PrintOut From:=2 * i - 1, To:=2 * i - 1
  10.     Next i
  11.     If MsgBox("现在开始打印偶数页,请放好纸张后点击是执行", vbInformation + vbYesNoCancel, "") = vbYes Then
  12.     For j = 1 To Int(x / 2) + 1
  13.     ActiveWindow.SelectedSheets.PrintOut From:=2 * j, To:=2 * j
  14.     Next j
  15.     End If
  16. End Sub
复制代码

作者: ycxchen    时间: 2011-5-3 14:54
再次谢谢roych的指导!




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3