Friday, May 30, 2008

Sacar flash de excel o word

Un dia me llego algo re-adictivo a mi mail y era una animacion flash embebida en un archivo de excel, entonces como de costumbre con otras cosas me pregunte.. Sacar una animacion flash de un xls sera posible? trate un par de cosas ke no funcionaron y despues de darme cuenta ke no era tan obvio probe satisfactoriamente el sig codigo:



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 =)

2 comments:

  1. 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.

    Gracias mi correo es cali.huella@gmail.com

    ReplyDelete
  2. BtbW: falta declarar dim myArr as byte para que funcione el codigo

    ReplyDelete