2011-11-28 30 views
7

que utilizo:archivo EXE Insertar en el archivo Excel

retVal = Shell("program.EXE " & filename, vbNormalFocus) 

Para ejecutar un programa de necesidad para mi hoja de cálculo Excel.

¿Es posible incrustar el archivo EXE en el archivo de Excel?

¿Y cómo lo ejecutaría entonces?

Ideias:

1 - Algún tipo de una función bin2str para convertir binario a cadena (para que pueda almacenarla en el programa como una variable y una str2bin (el opuesto)

2 - he leído algo sobre control OLE (que se puede incrustar allí), pero realmente no sé por dónde empezar en este caso

+0

No downvote. No se puede dar el programa externo con la hoja de Excel sin incrustarlo. – Mudassir

+0

Usuario con mal comportamiento que tengo que tratar. Y sé que no borrarán los archivos xls. No estoy tan seguro de cualquier otro archivo que coloque allí. También es más fácil distribuir –

+2

Puede verificar los archivos de los que depende su programa, y ​​si no encuentra ninguno de ellos, informe al usuario. Deben guardar todos los componentes si quieren usar su programa. – Mudassir

Respuesta

6

he aquí un esbozo de solución que evite OLE:

  1. Crear una hoja de trabajo oculta.
  2. Utilice una base 64 codificada para convertir el archivo exe a texto.
  3. Almacene ese texto en las celdas de la hoja de trabajo en la hoja de trabajo oculta. Como hay un límite en la cantidad de caracteres en una celda (32,767), deberá dividir la cadena en partes.

Obviamente, deberá invertir este procedimiento cuando desee guardar y ejecutar el archivo exe.

+5

Oh. Mi. Dios. Esto no es santo y me hace querer suicidarme. +1 –

+0

@ Jean-François ¡Lo sé, también me pone histérico! –

2

Puede hacerlo usando: Insertar> Objeto y luego seleccionando 'Crear desde archivo'.

para agregarlo a su hoja usar VBA:

Dim o As OLEObject 
Set o = ActiveSheet.OLEObjects.Add(Filename:="C:\program.exe") 

Entonces este es el comando para ejecutar program.exe:

o.Verb Verb:=xlPrimary 

No estoy seguro de cómo pasar argumentos a ella, sin embargo (por ejemplo, su filename).

Nota: las aplicaciones no confiables emitirán una advertencia cuando las ejecute.

Cuestiones relacionadas