简简单单将word或excel文件里多个嵌入的flash文件提取出来
以前随便写的代码(改了下可以提取word或excel文件里多个嵌入的FWS格式的flash文件,分别保存)
% u0 q, U: T$ G' C) J. Z1 l4 A
& i, {# L( u, t: v' ?, BSub ReadData()$ ?% F' C4 j) I% k
Dim tmpFileName As String, FileNumber As Integer, OldName As String
6 q( l) l9 h: ~6 C" fDim myFileId As Long
. j' p5 J3 e4 F7 p4 U; } BDim myArr() As Byte
2 C" P9 D/ t3 L+ q2 j9 wDim i As Long; K3 e% F. v! f* d. ~8 v
Dim MyFileLen As Long, myIndex As Long$ F- b" C3 X' a0 e
Dim swfFileLen As Long
# u5 Y9 {& z rDim swfArr() As Byte5 O( `0 X& V4 d% n% Q
tmpFileName = Application.GetOpenFilename("office File(*.doc;*.xls),*.doc;*.xls", , "确定要分析的office文件")& D# ?0 x3 o' p) d
If tmpFileName = "False" Then Exit Sub
# j- g( d; m+ c/ ?' P0 UmyFileId = FreeFile
3 s+ m0 ^4 v7 ^Open tmpFileName For Binary As #myFileId
$ S% b; _9 u$ A/ {- ZMyFileLen = LOF(myFileId)
- {' w9 p1 A) l& N% f" N* yReDim myArr(MyFileLen - 1)+ H7 E" \1 N8 `. }
Get myFileId, , myArr()7 g3 }1 {- k% o" ]2 `: k
Close myFileId/ G5 f E: Z8 ^! d
Application.ScreenUpdating = False: l; o6 E7 R- P" p; K. i8 v6 X
OldName = Left(tmpFileName, Len(tmpFileName) - 4)
/ _) }" l; s, P, ^i = 0
9 ]" F! L* |6 @ M5 RDo While i < MyFileLen
* X) n! |0 i H+ Z4 q/ v% P5 k8 L If myArr(i) = &H46 Then
3 c' ]6 T# |$ `% a, A; \8 J7 a0 R If myArr(i + 1) = &H57 And myArr(i + 2) = &H53 Then6 u! G" c( r$ j, U/ E. v
swfFileLen = CLng(&H1000000) * myArr(i + 7) + CLng(&H10000) * myArr(i + 6) + CLng(&H100) * myArr(i + 5) + myArr(i + 4)7 ~9 u/ X2 ~' [5 j6 o1 q. a
ReDim swfArr(swfFileLen - 1)3 _+ v6 e- h8 \! c0 f6 X
For myIndex = 0 To swfFileLen - 1, K, T# d. Q! b! ^3 Q( s
swfArr(myIndex) = myArr(i + myIndex)
# H+ a6 j0 i3 {. { Next myIndex4 W1 s* q! }3 j& C' A; A
myFileId = FreeFile5 l- v) D0 w! M6 R# J& q7 B
tmpFileName = OldName & i & ".swf"
" _* }1 P& @: r5 B$ s; F4 \4 u Open tmpFileName For Binary As #myFileId
& \9 t: n) p# N# O5 K& e0 q Put #myFileId, , swfArr
3 j0 \: Z! P- ? j) |5 E Close myFileId
6 d" }' M6 J1 n! Q/ K" x i = i + swfFileLen + 8: D9 ]4 c L5 e, o
Else
- f& N Z' r d7 L& B9 \ i = i + 3
4 A+ V3 J8 B. m4 q- j- s End If0 G9 l$ B: {. @! ]* O6 A; c: Q
Else
- N; G$ m+ R+ p5 h i = i + 1% ^" Q0 Y; V2 c8 ` y$ \9 P
End If
; D/ H6 N1 r. }2 m- Q5 W0 @. X" CLoop
! {7 `3 ?3 E; y3 y3 h% W8 d" WMsgBox "以" & OldName & "1-n.swf 名字保存"( V" q3 I: p k
End Sub/ |7 M6 K" A1 T# t5 V; i+ L; E, ]
3 A6 D5 P; u0 h7 P& u* H& X
步骤:工具》》》宏》》》VB编辑器》》》运行。