วันศุกร์ที่ 17 ธันวาคม พ.ศ. 2553

วิธีแยกไฟล์ flash ที่ฝังใน Excel

เพื่อน ๆ พี่ ๆ น้อง ๆ คงเคยได้รับอีเมล์ที่เป็นไฟล์ flash ที่ฝังอยู่ในโปรแกรม MS Excel กันมาบ้าง บางทีเราอาจจะอยากดึงไฟล์ flash นั้นมาเก็บไว้ หรือส่งต่อ แนะนำให้คนอื่น ๆ ได้ดูบ้าง โดยอยากได้เป็นไฟล์ของไฟล์flash .swf ใช่มั้ยครับ แต่ไม่รู้จะดึงไฟล์ flash  นี้ออกจากการฝังใน Excel ยังไงดี  วันนี้ผมมีวิธีแยกไฟล์ flash ที่ฝังใน Excel มาฝากกันครับ


1. เปิดโปแกรม notepad ขึ้นมา และ copy script ข้างล่างนี้ไปวางแล้วจัดการ save โดยเลือก Type เป็น All Files และ save ชื่อว่า  saveflash.vbs

Sub ExtractFlash()
   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", , "Select Excel / Word 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 "SaveAs " & tmpFileName
End Sub


2. เปิดโปรแกรม MS Excel ขึ้นมา (หน้าว่าง ๆ นะครับ ไม่ใช่ส่วนของไฟล์)
3. ไปที่  Tools --> Macro --> Visual Basic Editor
4. จะปรากฎหน้าต่างของ  Microsoft Visual Basic คลิก File --> Import File...
5. เลือก Files of Type : All Files (*.*) แล้วเลือกเปิดไฟล์ saveflash.vbs ที่เราสร้างไว้ในขั้นที่ 1
6. คลิกเมนู Run --> Run Macro
7. ที่หน้าต่าง Macros จะมี extract Flash อยู่ในช่อง Macro Name ให้คลิก Run
8. โปรแกรมจะให้เราไปเลือกไฟล์ Excel ที่มีแฟลชอยู่ในนั้น (ไฟล์ที่มี Flash ฝังอยุ่แล้วเราต้องการจะแยกไฟล์ Flash ออกมานั่นเองครับ)
9. โปรแกรมจะแสดงหน้าต่าง path ของไฟล์ที่ทำการ Extract ออกมาให้ ซึ่งไฟล์ที่ได้จะมีนามสกุล .swf แล้วครับ

1 ความคิดเห็น: