最近得到一些好玩的Falsh,无奈都是嵌入在Word或Excel中的。几经搜寻,找到一个很好的提取方法。这样就可以直接带着Flash跑咯。。。
具体方法:
1. 点击工具——>宏——>宏
最近得到一些好玩的Falsh,无奈都是嵌入在Word或Excel中的。几经搜寻,找到一个很好的提取方法。这样就可以直接带着Flash跑咯。。。
具体方法:
1. 随便找一个Excel文件(不可以是Word),打开。
2. 点击工具——>宏——>宏
3. 弹出一个宏创建窗体,在窗口中输入宏名(例如:宏名:ExtractFlash)点击创建按钮。注意,必须先输入“宏名”之后创建按钮才可以点哦。。。
4. 弹出一个编程界面,在界面的中间有一个小窗口,在窗口中输入下面的程序段。
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
Sub CollectFlashFromExcel()Sub CollectFlashFromExcel()
'
' CollectFlashFromExcel Macro
' 宏由 phcis 录制,时间: 2008-9-4
'
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
'
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
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
tmpFileName = Application.GetOpenFilename("office File(*.doc;*.xls),*.doc;*.xls", , "请选择一个包含Flash的Office文档")
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
If tmpFileName = "False" Then Exit Sub
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
myFileId = FreeFile
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Open tmpFileName For Binary As #myFileId
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
MyFileLen = LOF(myFileId)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
ReDim myArr(MyFileLen - 1)
Get myFileId, , myArr()
Close myFileId
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Application.ScreenUpdating = False
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
i = 0
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Do While i < MyFileLen
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
If myArr(i) = &H46 Then
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
If myArr(i + 1) = &H57 And myArr(i + 2) = &H53 Then
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
swfFileLen = CLng(&H1000000) * myArr(i + 7) + CLng(&H10000) * myArr(i + 6) + CLng(&H100) * myArr(i + 5) + myArr(i + 4)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
ReDim swfArr(swfFileLen - 1)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
For myIndex = 0 To swfFileLen - 1
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
swfArr(myIndex) = myArr(i + myIndex)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Next myIndex
Exit Do
Else
i = i + 3
End If
Else
i = i + 1
End If
Loop
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
myFileId = FreeFile
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
tmpFileName = Left(tmpFileName, Len(tmpFileName) - 4) & ".swf"
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Open tmpFileName For Binary As #myFileId
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Put #myFileId, , swfArr
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Close myFileId
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
MsgBox "以" & tmpFileName & "名字保存"
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
End Sub
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
等提取结束后将会在源文件同一路径下生成同名的swf文件,即Flash文件。
请注意:
1.如果出现语法错误,找不到Application.GetOpenFilename()请将它的下一行移动到上一行结尾即可。。。
2.如果要提取Word中的Flash请将宏建立在Excel中,然后运行的时候选择要提取的Word文件即可。直接建立在Word中将会提示找不到方法。