在ppt中嵌入swf文件的方法大家可能都比较熟悉,感觉比较简单,但如果偶尔遇到一个ppt里面有好的swf文件,想单独提取保存下来却不是一件容易事情。
网上能搜到的方法大概有这么几种:
①利用UltraEdit-32软件进行提取,相对比较复杂,需要安装新的软件,新手不易操作;
②用flash吸血鬼,把ppt里的swf吸出来,同样要安装软件,费时费力,根据我的经验,有时不一定成功;
③使用PPT文件Flash提取器来提取,具体方法我曾在k12地理论坛介绍过,也比较麻烦,还有一个致命缺陷就是只适用于xp系统,对于vista、windows 
7等系统无法使用,因为在这两个系统下无法成成片段*.shs文件;
④至于网上其他的说法比如另存为网页格式文件等,纯粹骗人,根本行不通。
今天给大家介绍一种简单、实用的方法,仅利用电脑上的excel就可以实现,因此对于绝大多数用户而言,不需要再安装软件,如果你连excel也没装的话,我就没话说了。
我用的是office 
2010,以此为例讲解。新建一个excel文档,在“开发工具”选项卡下面单击“vb”按钮,进入编程状态,单击“插入”菜单下的“模块”命令,在弹出的窗口中粘贴下面代码:
 
 
 
1.jpg
 
 
 
2.jpg
 
Sub ExtractFlash()
Dim tmpFileName As String, FileNumber As Integer
Dim myFileId As Long
Dim myArr() As Byte
Dim i As Long
Dim MyFileLen As Long, myIndex As Long
Dim swfFileLen As Long
Dim swfArr() As Byte
tmpFileName = Application.GetOpenFilename("office 
File(*.doc;*.xls),*.doc;*.xls", , "確定要分析的 Office 檔")
If tmpFileName = "False" Then Exit Sub
myFileId = FreeFile
Open tmpFileName For Binary As #myFileId
MyFileLen = LOF(myFileId)
ReDim myArr(MyFileLen - 1)
Get myFileId, , myArr()
Close myFileId
Application.ScreenUpdating = False
i = 0
Do While i < MyFileLen
 
If myArr(i) = &H46 Then
 
If myArr(i + 1) = &H57 And myArr(i + 2) = &H53 Then
 
swfFileLen = CLng(&H1000000) * myArr(i + 7) + CLng(&H10000) * myArr(i + 6) + 
CLng(&H100) * myArr(i + 5) + myArr(i + 4)
 
ReDim swfArr(swfFileLen - 1)
 
For myIndex = 0 To swfFileLen - 1
 
swfArr(myIndex) = myArr(i + myIndex)
 
Next myIndex
 
Exit Do
 
Else
 
i = i + 3
 
End If
 
Else
 
i = i + 1
 
End If
Loop
myFileId = FreeFile
tmpFileName = Left(tmpFileName, Len(tmpFileName) - 4) & ".swf"
Open tmpFileName For Binary As #myFileId
Put #myFileId, , swfArr
Close myFileId
MsgBox "以" & tmpFileName & "名字保存"
End Sub
粘贴好了以后返回到excel主界面,把该excel文档起一个你容易辨识的名字,保存为“启用宏的工作簿”,留着用来提取swf文件。
打开嵌入了swf文件的ppt,在swf文件上右键单击,选择复制,新建一个excel文件,在新建的excel文件里右键“粘贴”,把ppt里的swf文件复制过来,起个名字,保存为excel 
97—2003工作薄(这里面的版本选择很重要,不要选错),保存好了关闭该excel。
打开我们第一个粘贴有代码的excel文档,在“开发工具”下,单击“宏”,弹出宏对话框,单击“执行”,在打开的窗口中选择粘贴有swf文件的excel文件,大功告成,里面的swf马上就会被提取出来,不信,你试试!
 
 
 
3.jpg提取嵌入PPT中的SWF文件
 
在ppt中嵌入swf文件的方法大家可能都比较熟悉,感觉比较简单,但如果偶尔遇到一个ppt里面有好的swf文件,想单独提取保存下来却不是一件容易事情。
网上能搜到的方法大概有这么几种:
①利用UltraEdit-32软件进行提取,相对比较复杂,需要安装新的软件,新手不易操作;
②用flash吸血鬼,把ppt里的swf吸出来,同样要安装软件,费时费力,根据我的经验,有时不一定成功;
③使用PPT文件Flash提取器来提取,具体方法我曾在k12地理论坛介绍过,也比较麻烦,还有一个致命缺陷就是只适用于xp系统,对于vista、windows 
7等系统无法使用,因为在这两个系统下无法成成片段*.shs文件;
④至于网上其他的说法比如另存为网页格式文件等,纯粹骗人,根本行不通。
今天给大家介绍一种简单、实用的方法,仅利用电脑上的excel就可以实现,因此对于绝大多数用户而言,不需要再安装软件,如果你连excel也没装的话,我就没话说了。
我用的是office 
2010,以此为例讲解。新建一个excel文档,在“开发工具”选项卡下面单击“vb”按钮,进入编程状态,单击“插入”菜单下的“模块”命令,在弹出的窗口中粘贴下面代码:
 
 
 
1.jpg
 
 
 
 
2.jpg
 
Sub ExtractFlash()
Dim tmpFileName As String, FileNumber As Integer
Dim myFileId As Long
Dim myArr() As Byte
Dim i As Long
Dim MyFileLen As Long, myIndex As Long
Dim swfFileLen As Long
Dim swfArr() As Byte
tmpFileName = Application.GetOpenFilename("office 
File(*.doc;*.xls),*.doc;*.xls", , "確定要分析的 Office 檔")
If tmpFileName = "False" Then Exit Sub
myFileId = FreeFile
Open tmpFileName For Binary As #myFileId
MyFileLen = LOF(myFileId)
ReDim myArr(MyFileLen - 1)
Get myFileId, , myArr()
Close myFileId
Application.ScreenUpdating = False
i = 0
Do While i < MyFileLen
 
If myArr(i) = &H46 Then
 
If myArr(i + 1) = &H57 And myArr(i + 2) = &H53 Then
 
swfFileLen = CLng(&H1000000) * myArr(i + 7) + CLng(&H10000) * myArr(i + 6) + 
CLng(&H100) * myArr(i + 5) + myArr(i + 4)
 
ReDim swfArr(swfFileLen - 1)
 
For myIndex = 0 To swfFileLen - 1
 
swfArr(myIndex) = myArr(i + myIndex)
 
Next myIndex
 
Exit Do
 
Else
 
i = i + 3
 
End If
 
Else
 
i = i + 1
 
End If
Loop
myFileId = FreeFile
tmpFileName = Left(tmpFileName, Len(tmpFileName) - 4) & ".swf"
Open tmpFileName For Binary As #myFileId
Put #myFileId, , swfArr
Close myFileId
MsgBox "以" & tmpFileName & "名字保存"
End Sub
粘贴好了以后返回到excel主界面,把该excel文档起一个你容易辨识的名字,保存为“启用宏的工作簿”,留着用来提取swf文件。
打开嵌入了swf文件的ppt,在swf文件上右键单击,选择复制,新建一个excel文件,在新建的excel文件里右键“粘贴”,把ppt里的swf文件复制过来,起个名字,保存为excel 
97—2003工作薄(这里面的版本选择很重要,不要选错),保存好了关闭该excel。
打开我们第一个粘贴有代码的excel文档,在“开发工具”下,单击“宏”,弹出宏对话框,单击“执行”,在打开的窗口中选择粘贴有swf文件的excel文件,大功告成,里面的swf马上就会被提取出来,不信,你试试!