
常用Microsoft Office 工具的朋友们都知道,将word文件转化为powerpoint(以下简称ppt)文件很容易,但是要将ppt转化为word格式确是很困难,有的朋友使用复制粘贴循环操作的方法(本人曾经就这么做),既麻烦,而且效果也不是很好,使用office的转化工具则出现乱码,下面我教朋友们一种简单的将ppt文件转化为word文件的方法,这种方法会自动将ppt文件里的图片,声音等多媒体文件删除,只把文本格式的内容保存到word文件里。
下面将给出一份代码,你只需把下面的代码复制,粘贴到文本文档里,然后另存为****.vbs(****可以自己改变,如:转换.vbs)。然后把你想转换为word格式的ppt文件放到c盘下,不要放文件夹,直接放文件!运行刚才生成的小程序,安提示确定,修改想保存的路径就可以了,稍等一会即可完成,转换过程可视。此程序小而精悍,转换效果很好故与大家分享,转换好后需要的话自己可以重新排版!
下面为代码:(从’开始复制)
'绑定到本地计算机
strComputer = "."
'如果发生错误,继续执行
on error resume next
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
msgbox "此脚本可以批量将ppt文件中的文本转换为word文件。图片、表格等内容则自动跳过" & vbcrlf & "使用时请把所有要转换的ppt文件复制到目录c:\下。双击运行此文件即可。" & vbcrlf & "运行此脚本需要本机上安装了office"
'创建一个word对象
Set objWord = CreateObject("Word.Application")
'创建一个ppt对象
Set pptApp = CreateObject("PowerPoint.application")
'获得c:\目录下的文件集合
Set FileList = objWMIService.ExecQuery _
("ASSOCIATORS OF {Win32_Directory.Name='c:'} Where " _
& "ResultClass = CIM_DataFile")
For Each objFile In FileList
'如果文件的扩展名是ppt
If objFile.Extension = "ppt" Then
pptApp.visible = true
'打开这个ppt文件
Set pptSelection = pptApp.Presentations.Open("c:\" & objFile.FileName & "." & objFile.Extension)
'如果想让脚本处理得快些,把下面一行改为“objWord.Visible = false”,不推荐。
objWord.Visible = true
'新建一个word,以保存ppt中的文本
Set objDoc = objWord.Documents.Add()
Set objSelection = objWord.Selection
'从ppt的第一页开始循环。Slides.Count即幻灯片的数量
For i = 1 To pptSelection.Slides.Count
'从每一张ppt的第一个文本框开始循环,Shapes.Count,即每张幻灯片中文本框的数量
For j = 1 To pptSelection.Slides(i).Shapes.Count
'如果是每页的第一行,就按标题处理,变成黑体字
if i =1 then
objSelection.Font.Name = "黑体"
'把文本框中的文字添加到word中
objSelection.TypeText pptSelection.Slides(i).Shapes(j).TextFrame.TextRange.text
objSelection.TypeParagraph()
objSelection.Font.Name = "宋体"
end if
objSelection.TypeText pptSelection.Slides(i).Shapes(j).TextFrame.TextRange.text
'加一个回车
objSelection.TypeText vbcrlf
Next
next
'关闭这个ppt文件
pptSelection.close
'保存word文件。
objDoc.SaveAs("c:\" & objFile.FileName & ".doc")
'如果不需要关闭word,把下面这一行删掉
objDoc.close
'如果不想弹出消息框,把下面这一行删掉
msgbox "转换后的word已保存在c:\" & objFile.FileName & ".doc"
else '没有ppt文件
'msgbox "错误:c:\下没有发现ppt文件!"
End If
Next
pptApp.quit
下面将给出一份代码,你只需把下面的代码复制,粘贴到文本文档里,然后另存为****.vbs(****可以自己改变,如:转换.vbs)。然后把你想转换为word格式的ppt文件放到c盘下,不要放文件夹,直接放文件!运行刚才生成的小程序,安提示确定,修改想保存的路径就可以了,稍等一会即可完成,转换过程可视。此程序小而精悍,转换效果很好故与大家分享,转换好后需要的话自己可以重新排版!
下面为代码:(从’开始复制)
'绑定到本地计算机
strComputer = "."
'如果发生错误,继续执行
on error resume next
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
msgbox "此脚本可以批量将ppt文件中的文本转换为word文件。图片、表格等内容则自动跳过" & vbcrlf & "使用时请把所有要转换的ppt文件复制到目录c:\下。双击运行此文件即可。" & vbcrlf & "运行此脚本需要本机上安装了office"
'创建一个word对象
Set objWord = CreateObject("Word.Application")
'创建一个ppt对象
Set pptApp = CreateObject("PowerPoint.application")
'获得c:\目录下的文件集合
Set FileList = objWMIService.ExecQuery _
("ASSOCIATORS OF {Win32_Directory.Name='c:'} Where " _
& "ResultClass = CIM_DataFile")
For Each objFile In FileList
'如果文件的扩展名是ppt
If objFile.Extension = "ppt" Then
pptApp.visible = true
'打开这个ppt文件
Set pptSelection = pptApp.Presentations.Open("c:\" & objFile.FileName & "." & objFile.Extension)
'如果想让脚本处理得快些,把下面一行改为“objWord.Visible = false”,不推荐。
objWord.Visible = true
'新建一个word,以保存ppt中的文本
Set objDoc = objWord.Documents.Add()
Set objSelection = objWord.Selection
'从ppt的第一页开始循环。Slides.Count即幻灯片的数量
For i = 1 To pptSelection.Slides.Count
'从每一张ppt的第一个文本框开始循环,Shapes.Count,即每张幻灯片中文本框的数量
For j = 1 To pptSelection.Slides(i).Shapes.Count
'如果是每页的第一行,就按标题处理,变成黑体字
if i =1 then
objSelection.Font.Name = "黑体"
'把文本框中的文字添加到word中
objSelection.TypeText pptSelection.Slides(i).Shapes(j).TextFrame.TextRange.text
objSelection.TypeParagraph()
objSelection.Font.Name = "宋体"
end if
objSelection.TypeText pptSelection.Slides(i).Shapes(j).TextFrame.TextRange.text
'加一个回车
objSelection.TypeText vbcrlf
Next
next
'关闭这个ppt文件
pptSelection.close
'保存word文件。
objDoc.SaveAs("c:\" & objFile.FileName & ".doc")
'如果不需要关闭word,把下面这一行删掉
objDoc.close
'如果不想弹出消息框,把下面这一行删掉
msgbox "转换后的word已保存在c:\" & objFile.FileName & ".doc"
else '没有ppt文件
'msgbox "错误:c:\下没有发现ppt文件!"
End If
Next
pptApp.quit