............ Foro Excel
Si no lo has hecho aún: REGISTRATE!!!

Ejecutar archivo externo

Ver el tema anterior Ver el tema siguiente Ir abajo

Ejecutar archivo externo

Mensaje por Txinaurri el Mar Dic 02, 2008 2:26 am

Hola a todos

Quisiera saber si se puede utilizar la función Shell para ejecutar un archivo externo concreto. Es decir que el shell llamara (por ejemplo) no sólo a word, sino a un determinado archivo de word. ¿Es posible?

Sub ejecutar()
Dim archivo
archivo = Shell("C:\archivos de programa\microsoft office\office11\WINWORD.EXE", 3)
'' Me faltaría saber cómo llamar al archivo concreto
End Sub

Gracias

Txinaurri

Cantidad de envíos : 13
Fecha de inscripción : 27/05/2008

Volver arriba Ir abajo

Re: Ejecutar archivo externo

Mensaje por GalileoGali el Mar Dic 02, 2008 7:14 am

Francamente hay varias maneras de abrir un archivo Office, Pdf, etc mediante codigo, tal vez seria preferible usar Hyperlink, pero bueno ya que me hiciste recordar el viejo DOS Y SU PROMPT, me ciño a lo que propusiste inicialmente:

Código:
Sub ejecutar()
Dim archivo
ChDir "C:\Documents and Settings\Galileogali\Mis documentos"
archivo = Shell("C:\Archivos de programa\Microsoft Office\Office12\WINWORD.EXE ""BOTONES DE FORO.doc""", 3)
End Sub

Este codigo corre el riesgo de que al instalar tu aplicacion en otra maquina, bien podria no haber un WINWORD.EXE en esa ruta, es mas para que funcione en tu PC, DEBERIAS FIJARTE SI NO HAY QUE MODIFICARLA....

Ahora estoy corto de tiempo, pero luego pondre algun ejemplo mas "estandartizado"

_________________
GalileoGali
M.A.P. 2010-2013
Microsoft Active Professional
avatar
GalileoGali
Admin

Masculino Cantidad de envíos : 1963
Edad : 62
Ciudad - Pais : QUIROGA, Argentina
Version de Excel : 2000-2003-2007-2010
Fecha de inscripción : 24/01/2008

http://excelgali.mejorforo.net

Volver arriba Ir abajo

Re: Ejecutar archivo externo

Mensaje por GalileoGali el Mar Dic 02, 2008 1:21 pm

Podes recurrir a Hyperlink, pero con el problema del mensaje de alerta previo a la apertura, solo evitable si se "toca" el registro

Código:
Sub AbrirArchivo()
Dim ruta As String
ruta = "C:\Documents and Settings\Galileogali\Mis documentos\orden en tablas dinamicas.doc"
ActiveWorkbook.FollowHyperlink Address:=ruta, NewWindow:=True
End Sub

_________________
GalileoGali
M.A.P. 2010-2013
Microsoft Active Professional
avatar
GalileoGali
Admin

Masculino Cantidad de envíos : 1963
Edad : 62
Ciudad - Pais : QUIROGA, Argentina
Version de Excel : 2000-2003-2007-2010
Fecha de inscripción : 24/01/2008

http://excelgali.mejorforo.net

Volver arriba Ir abajo

Re: Ejecutar archivo externo

Mensaje por Txinaurri el Mar Dic 02, 2008 4:34 pm

Hola Gali,

Gracias por tu pronta respuesta. La idea de utilizar ChDir me viene mejor ya que el archivo que quiero que se abra es de un programa freeware que tiene un bug en la instalación ya que, a veces (todavía no he descubierto cuándo) no asocia la extensión al programa, por lo que, al ejecutarlo mediante hiperlink da error.

Respecto a la primera solución que propones he conseguido que se abra el archivo siempre y cuando le pongo la dirección exacta. No corre bien con "ActiveWorkbook.Path". Seguro que es porque algo hago mal.

Seguiré investigando.

Muchísimas gracias.

Txinaurri

Cantidad de envíos : 13
Fecha de inscripción : 27/05/2008

Volver arriba Ir abajo

Re: Ejecutar archivo externo

Mensaje por P@li el Jue Dic 04, 2008 6:13 pm

Hola,
Miren, yo probé este código y funciona sin ChDir
Código:

Sub ejecutar()
  Dim proceso
  Dim programa
  dim archivo
  'programa debe contener la ruta completa del programa
  programa="notepad.exe"
  'archivo debe contener la ruta completa al archivo
  'podria ser tambien
  'archivo=ActiveWorkbook.Path & "\archivo.doc"
  archivo="C:\Archivos de programa\Microsoft Visual FoxPro OLE DB Provider\Nuevo Documento de texto.txt"
  proceso = Shell(programa & " " & archivo, 3)
End Sub

Saludos

P@li
Admin

Masculino Cantidad de envíos : 243
Edad : 34
Ciudad - Pais : Buenos Aires, Argentina
Version de Excel : Microsoft Excel 2002 (10.2614.2625)
Fecha de inscripción : 03/03/2008

Volver arriba Ir abajo

Re: Ejecutar archivo externo

Mensaje por Txinaurri el Vie Dic 05, 2008 12:12 am

Hola P@li,
Gracias por tu sugerencia. Ya la había probado y plantea un problema que no puedo solucionar. Me explico:

La aplicación se ejecuta correctamente, sin embargo al llamar al archivo concreto me ocurre que entiende que el archivo es el texto hasta el primer espacio en blanco. Si éste se encuentra en una carpeta que tiene más de una palabra (por ej. "c:\temp\esto es una prueba\doc.doc") entiende que el archivo a abrir es "esto" y no "doc.doc".... a no ser que esté haciendo algo mal, ya que soy un mero aficionadillo y tengo conocimientos limitados.

¿También os ocurre eso? (digo lo del archivo, no lo de los conocimientos ;-)

Saludos

Txinaurri

Cantidad de envíos : 13
Fecha de inscripción : 27/05/2008

Volver arriba Ir abajo

Re: Ejecutar archivo externo

Mensaje por GalileoGali el Vie Dic 05, 2008 12:31 am

Probaste poniendo las dobles comillas dobles (""Nombre archivo"") que yo puse en mi respuesta??

_________________
GalileoGali
M.A.P. 2010-2013
Microsoft Active Professional
avatar
GalileoGali
Admin

Masculino Cantidad de envíos : 1963
Edad : 62
Ciudad - Pais : QUIROGA, Argentina
Version de Excel : 2000-2003-2007-2010
Fecha de inscripción : 24/01/2008

http://excelgali.mejorforo.net

Volver arriba Ir abajo

Re: Ejecutar archivo externo

Mensaje por Txinaurri el Dom Dic 07, 2008 4:37 am

Están llamando los loqueros a la puerta y preguntan por mí.

Después de mil horas no he podido resolver el problema, aunque me he acercado bastante.

Probablemente lo que no funciona está en la aplicación y no en la macro.

Me explico: con la primera macro que puso Gali ejecuto correctamente la aplicación, pero ésta... desagradecida, donde busca el archivo de referencia para abrirlo es en el directorio que tiene por defecto y, ¡claro! ahí no lo encuentra porque está en ontra carpeta... así que creo que no hay solución.

Con la macro de P@li pasa lo que he comentado antes, entiende que el archivo es la ultima palabra antes de un espacio y es una pena, porque si pongo el nombre de la carpeta sin espacios, entonces funciona.... Yo lo haría, pero ¿y el usuario final?

A ver si alguien toma el testigo antes de que me pongan la camisa de fuerza

Saludos

Txinaurri

Cantidad de envíos : 13
Fecha de inscripción : 27/05/2008

Volver arriba Ir abajo

Re: Ejecutar archivo externo

Mensaje por GalileoGali el Dom Dic 07, 2008 8:45 am

a ver si podmos lograr despejar el tema:
1)¿ De que aplicacion se trata?
1.1) ¿Ocurre normalmente que haciendo doble-Click sobre el icono de un archivo asociado a ésta, nuestra aplicación, el archivo se abra (obvamente con la aplicacion, tal como ocurre con los Archivos de Office)?

2) Ruta completa donde se encuentra el Ejecutable que abre la Aplicacion.

3) Ruta completa donde se encuentra el archivo que se desea abrir.

Todo, tal y como aparece en tu PC.....

_________________
GalileoGali
M.A.P. 2010-2013
Microsoft Active Professional
avatar
GalileoGali
Admin

Masculino Cantidad de envíos : 1963
Edad : 62
Ciudad - Pais : QUIROGA, Argentina
Version de Excel : 2000-2003-2007-2010
Fecha de inscripción : 24/01/2008

http://excelgali.mejorforo.net

Volver arriba Ir abajo

Re: Ejecutar archivo externo

Mensaje por Txinaurri el Dom Dic 07, 2008 12:25 pm

GALI, sinceramente te agradezco tu dedicación

PROYECTO
-Elaborar una herramienta en excel de distribución gratuíta que permita estudiar las relaciones sociales en el aula.
-Aprovechar el programa NETDRAW para la realización de la representación gráfica de dichas relaciones.

PROBLEMA
En algunos colegios, los ordenadores están preparados para que no se puedan instalar programas (para evitar los virus). Eso hizo que algunos colegas psicólogos sin experiencia en ordenadores tuvieran problemas al instalar NETDRAW por lo que el programa “no les funcionaba”.

PROYECTO DE SOLUCIÓN
Realizar una versión de NETDRAW portable que no requiera instalación.

PROBLEMA QUE PLANTEA ESA SOLUCIÓN
La herramienta de excel, llama a los archivos que ha generado para su representación gráfica mediante hiperlinks, por lo que, al ser ejecutados, el ordenador no reconoce el programa “origen”.

SOLUCIÓN TEÓRICA
Que, desde Excel, no sólo llame al archivo generado, sino que, además llame primero al programa NETDRAW

programa = "I:\colegio\netdraw\netdraw.exe"
archivo = ActiveWorkbook.Path & "\pregunta2.vna"
ejecutar= Shell(programa & archivo, 3)

Pero aquí me encuentro com que, si el nombre de la carpeta tiene espacios en blanco, la aplicación (quizás sólo NETDRAW) entiende que la última palabra antes del espacio en blanco es el archivo que quiero abrir.

El intentar flexibilizar su utilización (y mi tozudez) hace que intente resolver el problema mediante programación y no mediante la adevertencia de que no pongan espacios en blanco al crear la carpeta que contenga la aplicación (por otro lado, eso resolvería el problema).

EJEMPLO
“c:\temporal\prueba de sociograma\pregunta1.vna” busca el archivo “prueba” y no “pregunta1.vna!

Si lo consideras oportuno puedo “colgar”, tanto la herramienta excel como la aplicación NETDRAW.

Gracias.

Txinaurri

Cantidad de envíos : 13
Fecha de inscripción : 27/05/2008

Volver arriba Ir abajo

Re: Ejecutar archivo externo

Mensaje por GalileoGali el Lun Dic 08, 2008 9:53 am

puedes probar esto:
Código:

Sub ejecutar()
Dim archivo As String
Dim ejecutar as variant
programa = "I:\colegio\netdraw\netdraw.exe " 'con un espacio al final
ruta = "c:\temporal\prueba de sociograma"
ChDir ruta
archivo = """pregunta2.vna""" 'las triples dobles comillas resultaran innecesarias si el nombre carece de espacios, pudiendo ser SIMPLEMENTE simples
ejecutar = Shell(programa & archivo, 3)
End Sub

_________________
GalileoGali
M.A.P. 2010-2013
Microsoft Active Professional
avatar
GalileoGali
Admin

Masculino Cantidad de envíos : 1963
Edad : 62
Ciudad - Pais : QUIROGA, Argentina
Version de Excel : 2000-2003-2007-2010
Fecha de inscripción : 24/01/2008

http://excelgali.mejorforo.net

Volver arriba Ir abajo

Re: Ejecutar archivo externo

Mensaje por Txinaurri el Mar Dic 09, 2008 12:44 am

¡¡¡¡ ALELUYA !!!!

Gracias a vuestras pistas he dado con una solución (seguramente mejorable).

Es esta:

Código:
Sub ejecutar()
Dim archivo As String, programa As String, carpeta As String
Dim proceso As Variant

programa = "d:\colegio\netdraw\netdraw.exe"
archivo = "\pregunta1.vna"
carpeta = """" & ActiveWorkbook.Path & archivo
proceso = Shell(programa & " " & carpeta, 3)
End Sub

Gracias por todo

Txinaurri

Cantidad de envíos : 13
Fecha de inscripción : 27/05/2008

Volver arriba Ir abajo

Re: Ejecutar archivo externo

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 
Permisos de este foro:
No puedes responder a temas en este foro.