方法一:VBA代码法
新建一个文件,然后拷贝以下代码到VBA模块中,运行代码,选择含有Flash的Excel文件确定,即可获取swf文件。
- Sub ExtractFlash()
-
- Dim tmpFileName As String
- Dim FileNumber As Integer
- Dim myFileId As Long
- Dim MyFileLen As Long
- Dim myIndex As Long
- Dim swfFileLen As Long
- Dim i As Long
- Dim swfArr() As Byte
- Dim myArr() As Byte
-
- tmpFileName = Application.GetOpenFilename("MS Office File (*.doc;*.xls), *.doc;*.xls", , "Open MS Office file")
-
- 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 "Save the extracted SWF Flash as [ " & tmpFileName & " ]"
-
- End Sub
方法二:UE修改法
1、打开这个含有Flash的Excel文件,进入设计模式,选中这个Flash后拷贝到桌面,获取一个片段文件
2、用ULraEdit32(UE)打开这个片段文件,查找“465753”字段
3、把“465753”字段之前的文字全部剪切,然后把文件另存为”X.swf”
4、OK