zoukankan      html  css  js  c++  java
  • 从Word,Excel中提取Flash

    转载地址:http://www.cnblogs.com/phcis/archive/2008/09/04/1284035.html  

    最近得到一些好玩的Falsh,无奈都是嵌入在Word或Excel中的。几经搜寻,找到一个很好的提取方法。这样就可以直接带着Flash跑咯。。。

       具体方法:

          1.    随便找一个Excel文件(不可以是Word),打开。

    2.     点击工具——>宏——>宏

    3.     弹出一个宏创建窗体,在窗口中输入宏名(例如:宏名:ExtractFlash)点击创建按钮。注意,必须先输入“宏名”之后创建按钮才可以点哦。。。

    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.如果出现语法错误,找不到Application.GetOpenFilename()请将它的下一行移动到上一行结尾即可。。。

         2.如果要提取Word中的Flash请将宏建立在Excel中,然后运行的时候选择要提取的Word文件即可。直接建立在Word中将会提示找不到方法。


  • 相关阅读:
    Autofac-案例
    Autofac-DynamicProxy(AOP动态代理)
    AutoFac注册2-程序集
    MVC添加跨域支持Cros
    redis笔记3-基础知识与常用命令
    Redis笔记2-Redis安装、配置
    Redis笔记-八种数据类型使用场景
    ActionResult源码分析笔记
    .NET UrlRouting原理
    webapi使用ExceptionFilterAttribute过滤器
  • 原文地址:https://www.cnblogs.com/java20130723/p/3211669.html
Copyright © 2011-2022 走看看