论坛数据统计           欢迎到【弱电论坛】来学习和讨论问题!

弱电工程项目管理软件
★电工电气产品供求、电气展会、人才、电气技术文章、图库、电气技术论坛等相关内容,请跳转至【电气之家网】--- 可直接使用本站会员名和密码登陆!(首次使用需要激活账户)
标王 热搜: 网络监控  弱电  楼宇对讲  机房及机柜内部的理线方法  门禁  CAD  ar800-hn  综合布线  工资  面板 
 
 
当前位置: 首页 » 技术 » 电脑技术 » 常用软件 » 正文

解决幻灯片打印讲义从页码1开始的方法

放大字体  缩小字体 发布日期:2008-10-06  来源:互联网  作者:manage  浏览次数:1850
核心提示:雷鸣老师给我提了个很高级的问题:打印ppt讲义时,如何让页码不是从1开始。因为有时有好几个幻灯片打印,希望页码顺序能够相连,或者打印一套幻灯片的时候,中间卡纸了,要重新打印。ppt在这一点做到过份,其在重新打印的时候,出来的页面还是页码1。 网络上提出类似问题
 
 
    雷鸣老师给我提了个很高级的问题:打印ppt讲义时,如何让页码不是从1开始。因为有时有好几个幻灯片打印,希望页码顺序能够相连,或者打印一套幻灯片的时候,中间卡纸了,要重新打印。ppt在这一点做到过份,其在重新打印的时候,出来的页面还是页码1。


      网络上提出类似问题的人很多,大家都在怪微软公司在ppt打印方面的不通人性,但基本上没有看到简单有效的解决方案。综合自己实践研究,大致有以下几种解决方案可供参考。


1、利用空白幻灯片:在ppt的前面插入足够多的空白幻灯片,办法笨是笨了点,毕竟也是方法;


2、一页一页打印:设置幻灯片母版中的讲义母版,设置右下角数字区的“#”,使用固定数字,改一页打一页,呵呵。或者直接利用页脚的功能,在打印预览中的“选项”-“备注和讲义”中去除页码,在页脚中输入数字,这里的页脚位置也是在幻灯片母版中修改的,同样是一页一页打印。


3、先打印一系列仅仅打印了页码的空白纸张,然后利用这些已经有数字的白纸来打印。这个办法其实比上面两种要好,最容易操作。


4、上面三种方案都是临时的方案,有高人写了一个VBA(宏)来解决,我做了回好人,把他的代码汉化了:
(1) 在工具菜单上选择“宏”-“宏”,或者直接按快捷键“Alt+F8”,在宏名中随便输个名字,如“dayin”,然后点击“编辑”;
(2)在编辑窗口输入以下代码:
Dim i As Long
Dim lStart As Long
Dim lStop As Long
Dim lHandoutKind As Long
Dim lSlide As Long
Dim lSlideEnd As Long
Dim ppHandoutKind As PpPrintOutputType
Dim vbConfirm As VbMsgBoxResult

lSlide = InputBox("从哪一张幻灯片开始打印?", "开始幻灯片", "1")

lStart = InputBox("讲义起始页码编号: ", "讲义起始页码", "1")

lHandoutKind = InputBox("每页几张幻灯片?" & vbNewLine & "2, 3, 4, 6, 9?", "讲义打印类型", "4")

Select Case lHandoutKind
Case 1, 2
ppHandoutKind = ppPrintOutputTwoSlideHandouts
lHandoutKind = 2
Case 3
ppHandoutKind = ppPrintOutputThreeSlideHandouts
lHandoutKind = 3
Case 4
ppHandoutKind = ppPrintOutputFourSlideHandouts
lHandoutKind = 4
Case 5, 6
ppHandoutKind = ppPrintOutputSixSlideHandouts
lHandoutKind = 6
Case Else
ppHandoutKind = ppPrintOutputNineSlideHandouts
lHandoutKind = 9
End Select

vbConfirm = MsgBox("You have chosen to print " & lHandoutKind & "-up handouts, starting at page " & lStart & vbNewLine & " and slide number " & lSlide & ".", vbOKCancel)

If vbConfirm = vbOK Then

lStop = Round((ActivePresentation.Slides.Count - (lSlide - 1)) / lHandoutKind)
If Round((ActivePresentation.Slides.Count - (lSlide - 1)) Mod lHandoutKind) <= (lHandoutKind / 2) Then
lStop = lStop + 1
End If

For i = 1 To lStop

ActivePresentation.NotesMaster.HeadersFooters.SlideNumber.Visible = msoFalse
ActivePresentation.HandoutMaster.Shapes(4).TextFrame.TextRange.Text = lStart
lStart = lStart + 1

With ActivePresentation.PrintOptions

.RangeType = ppPrintSlideRange
With .Ranges

.ClearAll

lSlideEnd = lSlide + lHandoutKind - 1

If lSlide > ActivePresentation.Slides.Count Then
lSlide = ActivePresentation.Slides.Count
End If
If lSlideEnd > ActivePresentation.Slides.Count Then
lSlideEnd = ActivePresentation.Slides.Count
End If
.Add Start:=lSlide, End:=lSlideEnd
lSlide = lSlide + lHandoutKind
End With

’ Set number of copies to 1.

.NumberOfCopies = 1

.OutputType = ppHandoutKind

.HandoutOrder = ppPrintHandoutVerticalFirst
End With

ActivePresentation.PrintOut
Next i
End If

ActivePresentation.HandoutMaster.Shapes(4).TextFrame.TextRange.Text = ""
ActivePresentation.NotesMaster.HeadersFooters.SlideNumber.Visible = msoTrue
 
(3)运行宏,根据提示输入数字即可。
其实这段VBA代码不过将上面的笨办法使用机器来自动实现罢了,因为你会发现打印机中输出的文件是一页一页的文件,而不是多页的。
 
 
 
[ 技术搜索 ]  [ 加入收藏 ]  [ 告诉好友 ]  [ 打印本文 ]  [ 关闭窗口 ]

 
0条 [查看全部]  相关评论

 
点击排行
 
 
 
弱电基础 | 常用软件 | 信息发布规则 | 积分规则 | VIP会员注册 | 广告投放 | 弱电培训 | 联系我们 | 版权声明 | 帮助中心 | 网站地图 | 排名推广 | 京ICP备11008917号-3 | RSS订阅
★本站手机app客户端已上线! 点击下载