Word,ExcelからFlashを抽出する

2460 ワード

転載住所:http://www.cnblogs.com/phcis/archive/2008/09/04/1284035.html  
 
最近いくつかの面白いFalshを得て、仕方なくすべてWordあるいはExcelの中で埋め込みました。何度も探して、いい抽出方法を見つけました。これで直接Flashを持って走ることができます。
 
   具体的な方法:
      1.    Excelファイルを探してください。開けてください。
2.     をクリックします。
3.     マクロ作成フォームがイジェクトされ、ウィンドウにマクロ名(例えば、マクロ名:ExtrockFlash)を入力して作成ボタンをクリックします。すみません、先にマクロ名を入力してからボタンを作成しなければいけません。
4.     プログラムインターフェースをイジェクトします。インターフェースの真ん中に小さなウィンドウがあります。ウィンドウに次のプログラムを入力します。
 
Sub CollectFlashFromExcel()Sub CollectFlashFromExcel()

'

' CollectFlashFromExcel Macro

'    phcis   ,  : 2008-9-4

'



'

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", , "       Flash 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

 
 抽出が完了すると、ソースファイルと同じパスで同名のswfファイル、Flashファイルが生成されます。
 
 注意してください:
     1.文法エラーが発生したら、Apple.GetOpenFilename()が見つからない場合は、その次の行を前の行の最後に移動してください。
     2.WordのFlashを抽出する場合は、マクロをExcelにセットして、実行時に抽出するWordファイルを選択してください。Wordに直接作成すると、見つけられない方法が提示されます。