制作PPT进度条
2013-10-09 18:59
127 查看
为了美观PPT,然后在前人基础上改了个进度条,用宏命令完成,用OFFICE2010记得用启动宏的pptm模式保存PPT文件,不然宏代码不会保存。
按ALT+F8 创建一个宏 填入下面代码 运行下就得到了进度条。注:添加或删减页面,需要手动运行下宏,执行进度条更新
效果图:
代码:
Sub ProgressBar()
' by dukenuke@newsmth.net
' Sun Jul 11 00:06:13 2010
'
' Update by oicu#lsxk.org
' 2010/9/12 20:44
' 对首页以及隐藏幻灯片进行处理
'
' Upadte by mxio
' 2011/11/23
' 修改属性下移一层,第二页也不显示进度条
Dim mySlides As Slides
Dim pageBar As ShapeRange
Dim pageSHower As Shape
Dim pageWidth, pageHeight, pageStep
Dim MyArray() As Variant '增加一个数组以便统计隐藏的幻灯片
Dim i, j, k
j = 0
k = 0
Set mySlides = Application.ActivePresentation.Slides
pageWidth = Application.ActivePresentation.SlideMaster.Width
pageHeight = Application.ActivePresentation.SlideMaster.Height
' pageStep = pageWidth / mySlides.Count
ReDim MyArray(mySlides.Count, 0)
For i = 1 To mySlides.Count '统计隐藏的幻灯片数
If mySlides.Item(i).SlideShowTransition.Hidden = True Then
j = j + 1
MyArray(i, 0) = 1
Else
MyArray(i, 0) = 0
End If
Next
'除去首页和隐藏的幻灯片后计算进度条长度增量
If mySlides.Count - 1 - j > 0 Then
pageStep = pageWidth / (mySlides.Count - 1 - j)
Else
pageStep = 0
End If
On Error Resume Next
For i = 1 To mySlides.Count ' 改为从1开始
k = k + MyArray(i, 0) ' 计算当前隐藏的幻灯片数
Set pageBar = mySlides.Item(i).Shapes.Range(Array())
Set pageBar = _
mySlides.Item(i).Shapes.Range(Array("RectanglePageNum"))
If IsNull(pageBar) Or pageBar.Count = 0 Then GoTo newBar
Set pageSHower = pageBar.Item(1)
GoTo nextPage
newBar:
Set pageSHower = mySlides.Item(i).Shapes.AddShape( _
msoShapeRectangle, 0, _
pageHeight - 3, i * pageStep, 3)
pageSHower.Name = "RectanglePageNum"
nextPage:
pageSHower.Fill.ForeColor.RGB = RGB(64, 64, 64)
pageSHower.Line.Visible = msoFalse
' pageSHower.Width = i * pageStep
' 计算进度条长度时除去首页和隐藏的幻灯片
pageSHower.Width = (i - 1 - k) * pageStep * 0.74
pageSHower.Top = pageHeight - 27
pageSHower.Left = 74
pageSHower.Height = 18
pageSHower.ZOrder msoSendBackward
' 删除首页和隐藏的幻灯片的进度条
If i = 1 Or i = 2 Or MyArray(i, 0) = 1 Then pageSHower.Delete
Next
End Sub
按ALT+F8 创建一个宏 填入下面代码 运行下就得到了进度条。注:添加或删减页面,需要手动运行下宏,执行进度条更新
效果图:
代码:
Sub ProgressBar()
' by dukenuke@newsmth.net
' Sun Jul 11 00:06:13 2010
'
' Update by oicu#lsxk.org
' 2010/9/12 20:44
' 对首页以及隐藏幻灯片进行处理
'
' Upadte by mxio
' 2011/11/23
' 修改属性下移一层,第二页也不显示进度条
Dim mySlides As Slides
Dim pageBar As ShapeRange
Dim pageSHower As Shape
Dim pageWidth, pageHeight, pageStep
Dim MyArray() As Variant '增加一个数组以便统计隐藏的幻灯片
Dim i, j, k
j = 0
k = 0
Set mySlides = Application.ActivePresentation.Slides
pageWidth = Application.ActivePresentation.SlideMaster.Width
pageHeight = Application.ActivePresentation.SlideMaster.Height
' pageStep = pageWidth / mySlides.Count
ReDim MyArray(mySlides.Count, 0)
For i = 1 To mySlides.Count '统计隐藏的幻灯片数
If mySlides.Item(i).SlideShowTransition.Hidden = True Then
j = j + 1
MyArray(i, 0) = 1
Else
MyArray(i, 0) = 0
End If
Next
'除去首页和隐藏的幻灯片后计算进度条长度增量
If mySlides.Count - 1 - j > 0 Then
pageStep = pageWidth / (mySlides.Count - 1 - j)
Else
pageStep = 0
End If
On Error Resume Next
For i = 1 To mySlides.Count ' 改为从1开始
k = k + MyArray(i, 0) ' 计算当前隐藏的幻灯片数
Set pageBar = mySlides.Item(i).Shapes.Range(Array())
Set pageBar = _
mySlides.Item(i).Shapes.Range(Array("RectanglePageNum"))
If IsNull(pageBar) Or pageBar.Count = 0 Then GoTo newBar
Set pageSHower = pageBar.Item(1)
GoTo nextPage
newBar:
Set pageSHower = mySlides.Item(i).Shapes.AddShape( _
msoShapeRectangle, 0, _
pageHeight - 3, i * pageStep, 3)
pageSHower.Name = "RectanglePageNum"
nextPage:
pageSHower.Fill.ForeColor.RGB = RGB(64, 64, 64)
pageSHower.Line.Visible = msoFalse
' pageSHower.Width = i * pageStep
' 计算进度条长度时除去首页和隐藏的幻灯片
pageSHower.Width = (i - 1 - k) * pageStep * 0.74
pageSHower.Top = pageHeight - 27
pageSHower.Left = 74
pageSHower.Height = 18
pageSHower.ZOrder msoSendBackward
' 删除首页和隐藏的幻灯片的进度条
If i = 1 Or i = 2 Or MyArray(i, 0) = 1 Then pageSHower.Delete
Next
End Sub
相关文章推荐
- PPT图片特效制作36技-拼接图片
- PPT辅助制作工具整理,太实用了!
- iOS绘制 - 自定义制作进度条
- Cleaver快速制作网页PPT
- 用 VBA 实现在 PPT 最下边加个进度条
- 【AS3代码】制作加载资源进度小例子
- 如何用PPT制作多媒体光盘
- PPT这样学就对了之内容页圆环图的制作
- Silverlight 2学习教程(七):在Silverlight 2.0中制作资源加载进度条
- PPT制作要点
- ppt制作心得
- 【一天一个canvas】制作渐变式PPT背景(十五)
- Canvas制作动态进度加载水球
- 如何制作优秀的PPT
- 自定义View入门 —— 制作圆圈进度条
- 研究生答辩PPT制作
- PPT制作的资源
- c# 制作进度条
- 代码敲累了就来看看《PPT制作经验分享-发布版PPT》
- PPT镂空字体、填充文字、图片字、拆分字制作