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
and that's it!
Edit: En respuesta a cali, el procedimiento para aplicar el codigo es crear un macro en excel, para esto tecleamos Alt+F8, se abre una ventana y le asignamos un nombre x para crear un nuevo macro y le damos click en el boton de 'create', borramos lo que excel nos pone por default y le metemos el codigo de arriba, presionamos F5 para que excel corra el codigo y nos arroje el flash para poder grabarlo por separado =)
Hola con respecto al codigo que muestras para sacar flash de excel me gustaria que me indicaras donde se aplica el codigo, cual es el procedimiento.
ReplyDeleteGracias mi correo es cali.huella@gmail.com
BtbW: falta declarar dim myArr as byte para que funcione el codigo
ReplyDelete