龚建华
摘要:基于VBA对Microsoft office PowerPoint编程,笔者提出了一套PPT文字编辑的快速解决方案,大幅提高了PPT制作效率。该文详细描述了编程思路、关键代码、导入文档的编辑原则和宏程序应用规范,设计了通过导入文档一次性构建PPT文本框架和仅仅更新现有PPT文本内容的“开关”,以适应不同制作阶段或不同使用者的需要。
关键词:VBA编程;PPT制作;文本导入
中图分类号:TP37文献标识码:A文章编号:1009-3044(2012)24-5885-03
在教学、科研、商务诸多工作中,PowerPoint(PPT)的应用十分广泛。因此,PPT的制作技巧成为现代成功人士必须掌握的重要技能之一。快速制作一个优秀的PPT作品,需要事先准备好文字、图片和音像等资料。在已经编辑好了文字资料的情况下,通过复制和粘贴的方法,一张张的幻灯片骤一制作,工作效率很低;采用PowerPoint提供的在“大纲”模式下进行复制和粘贴的方法,只能一次性将文字粘贴到标题文本框中,工作效率仍然不高。笔者采取VBA编程方法,完美地解决了上述问题,大幅提高了PPT制作效率。
1 PPT文字编辑解决方案
打开或新建一个PPT文档,按Alt+F11,打开Visual Basic编辑器。首先引用Microsoft Word 11.0 Object Library和Wimdows Script Host Object Model对象,然后插入一个模块,在模块中建立一个名为“导入PPT”的过程,编程思路及关键代码如下:
1.1实现自动查找导入文件功能。
Dim MyFile As String, MyFile1 As String
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = False
.Filters.Clear
.Filters.Add "Word文件", "*.doc".Filters.Add "文该文件", "*.txt"
If .Show = -1 Then MyFile1 = .SelectedItems(1) Else Exit Sub
End With
1.2如果导入文件为Word文件,则转换为文该文件。
If Right(MyFile1, 3) = "doc" Then
On Error GoTo gjh5033
GetDocText1 = " "
Dim wapp As Word.Application Dim doc As Document
Dim GetDocText1 As String
Set wapp = New Word.Application
wapp.Visible = True
Set doc = wapp.Documents.Open(MyFile1) GetDocText1 = doc.Content.Text
Dim sFile As Object, FSO As Object
MyFile1 = Left(MyFile1, Len(MyFile1) - 4) & ".txt"
Set FSO = CreateObject("Scripting.FileSystemObject")
Set sFile = FSO.CreateTextFile(MyFile1, True)
sFile.WriteLine (GetDocText1)
sFile.Close
Set sFile = Nothing
Set FSO = Nothing
Name MyFile1 As MyFile
gjh5033:
If Not (doc Is Nothing) Then
doc.Close
Set doc = Nothing
End If
If Not (wapp Is Nothing) Then
wapp.Quit
Set wapp = Nothing
End If
On Error GoTo 0
End If
1.3获取将写入到每张幻灯片的标题、内容和备注
On Error Resume Next
Dim code As String, code1 As String, code2 As String
Dim str4() As Integer, n As Integer, m As Integer
Dim str5() As String, str6() As String, str7() As String
Dim dfdf As Boolean
code1 = "-----------"幻灯片内容分隔符
code2="备注:"备注标示符
n = 0: m = 0: dfdf = False
Open MyFile For Input As #1 Do While Not EOF(1)
code = ""
Line Input #1, code
code = Trim(CStr(code))
m = m + 1
If code = code1 Then
n = n + 1
ReDim Preserve str4(n) As Integer
ReDim Preserve str5(n) As String
ReDim Preserve str6(n) As String
ReDim Preserve str7(n) As String
str4(n) = m
dfdf = False
Else
If str4(n) + 1 = m Then
str6(n) = code
Else
If code = code2 Then dfdf = True
If dfdf = False Then
str5(n) = str5(n) & code & vbCrLf
Else
If code <> code2 Then str7(n) = str7(n) & code & vbCrLf
End If
End If
End If
Loop
Close #1
On Error GoTo 0
1.4将文件内容全部导入到幻灯片
Dim oPres As Presentation
Set oPres = Application.ActivePresentation
Dim oSlide As Slide
Dim oShape As Shape
Dim tr As TextRange
Dim i As Long, j As Long
YesNo = MsgBox("导入文档请按:确定" & vbCrLf & "更新内容请按:取消", vbOKCancel, "导入/更新")
If YesNo = "1" Then
For i = 2 To oPres.Slides.Count
ActiveWindow.Selection.SlideRange.Delete
Next
End If
If n > 1 Then
For i = 2 To n
If oPres.Slides.Count < i Then
ActiveWindow.View.GotoSlide Index:=ActivePresentation.Slides.Add(Index:=i, Layout:=ppLayoutText).SlideIndex
End If
Set oSlide = oPres.Slides.Item(i)
For j = 1 To 2)
Set oShape = oSlide.Shapes.Item(j)
If oShape.Name = "Rectangle 2" Then
oShape.TextFrame.TextRange.Text = str6(i - 1) End If
If oShape.Name = "Rectangle 3" Then
oShape.TextFrame.TextRange.Text = str5(i - 1)
End If
Set oShape = Nothing
NextPowerPoint.ActivePresentation.Slides(i).NotesPage.Shapes.Placeholders(2).TextFrame.TextRange.Text = str7(i - 1)
Set oSlide = Nothing
Next
Set oPres = Nothing
End If
2导入文档编辑时应注意的几个问题
导入文档可以是“.txt”和“.doc”文件。导入文档的制作需要遵循如下规则:
1)注意设定好标示符。此宏程序对每张幻灯片内容以"--"为分隔符,您也可以自己设定,更改code1变量即可。备注标示符为"备注:",您也可以通过修改code2变量来变更。但分隔符和标示符都必须单独为一行,且宏程序中设定的分隔符与文档中的分隔符必须完全一致。
2)分隔符下的第一行定义为幻灯片的标题内容,一般文字不宜超过18个字。
3)分隔符下的第二行开始一直到备注标示符或下一个分隔符止为幻灯片的讲解内容,可以有多个条目,以回车符为标志。但条目数不宜超过10个。
4)备注的应用:备注标示符与下一个分隔符之间的文字为备注内容。一个优秀的PPT作品,其讲解内容最好以标题方式展现,详细讲解内容放在备注中。
5)导入文件必须以分隔符结束。
3宏程序应用时的操作规则
1)设置窗口命令。一个宏程序如果不导入到窗口的工具栏中,则只对具有宏程序的PPT文档有效,换句话说,如果要应用到所有的PPT文档,则必须将宏程序以命令方式导入到Microsoft office PowerPoint的工具栏中。方法是:单击菜单“工具→自定义”命令,打开“自定义”对话框并切换到“命令”选项卡,然后选中“类别”下边列表框中的“宏”选项,这时在“命令”下边的列表框中就会出现我们刚才新添加的宏了。
在工具栏上右击,然后依次单击“自定义(C)…”——“命令”——“宏”,在自定义窗口的右则找到“导入PPT”命令,单击并拖放到工具栏的适当位置即可。以后任何时候打开PPT文件时,只要单击工具栏的“导入PPT”按钮,就可以轻松地将编辑好的文档导入到PPT中或更新PPT文本内容,非常方便和实用。
2)通常PPT文档的首页为封面设计,也就是母版的第二张幻灯片,因此,本宏程序设定为不对首页内容进行导入。如果您打开的PPT文档不止一张幻灯片,则导入时PPT的活动页不能是首页,否则首页会被视为“文档页”(也就是母版第一张幻灯片的版式)而导入内容。
3)强烈建议您先选择或设计好PPT母版,设置好母版“文档页”标题和内容文本框的字体、文字大小和颜色,然后再进行文本导入,因为这样导入后制作的PPT根本不用再去调整或编辑文本,从而大大提高了工作效率。
4)应用前需将PPT的宏安全级别设置为“中”或“低”,否则宏程序不会运行。宏安全级别设置后,必须重新启动Microsoft office PowerPoint才能生效。如果设置为“中”,则打开PPT文档时会出现是否启用宏的提示窗口。
5)本宏程序在Microsoft office PowerPoint 2003中调试通过。
文字编辑工作完成后,再添加合适的图片、动画等,一个图文并茂的PPT文档就这样轻松地完成了。
参考文献:
[1]翁丹,尹小港.PowerPoint 2007应用技能培训教程[M].北京:海洋出版社,2011.
[2]张艳波.PowerPoint基础教程[M].北京:清华大学出版社,2004.