tag:blogger.com,1999:blog-4623278671508370136.post591221697710231499..comments2023-08-01T13:39:53.991+02:00Comments on EXCEL FORO: Un blog de Excel: VBA: ShellExecute o cómo abrir desde Excel otros archivos.Excelforo - Ismael Romerohttp://www.blogger.com/profile/17680553534095355222noreply@blogger.comBlogger30125tag:blogger.com,1999:blog-4623278671508370136.post-2731575366296573872019-07-05T13:46:05.496+02:002019-07-05T13:46:05.496+02:00Hola de nuevo Ismael
- El problema no es la refer...Hola de nuevo Ismael<br /><br />- El problema no es la referencia Hoja1 porque lo tengo establecida como:<br /><br />Set Hoja1 = ThisWorkbook.Worksheets(NOMBREHOJA)<br /><br />De hecho, he probado a ejecutar codigo de prueba posterior a la apertura del Objeto Pdf tal como...<br /><br />Dim AppPdf As Object<br />Set AppPdf = CreateObject("Shell.Aplication")<br />AppPdf.Open(Ruta)<br />Hoja1.Cells(1, 1).Select<br />Hoja1.Cells(1, 1).Value = 1<br /><br />* Ruta es la ruta del fichero pdf a abrir, incluyendo su extension<br /><br /><br />La ejecucion de este codigo es correcta, abriendo el fichero pdf correctamente y posteriormente escribiendo el valor 1 en Excel en la celda A1, pero quedando finalmente el foco en el objeto Pdf (SumatraPdf, MicrosoftEdge o el que sea) sin mediar codigo por medio y no en Excel como seria lo logico. Un poco extraño, la verdad.<br /><br />2 - Respecto a saber la ruta de MicrosoftEdge lo digo para poder indicar la ruta de dicho objeto con la sentencia .Open para hacer una prueba, pero la ruta no es tan evidente como puede ser la del Objeto InternetExplorer o la de SumatraPdf, tal como:<br /><br />/.../InternetExplorer.exe o<br />/.../SumatraPdf.exe<br /><br />No consigo averiguar dicha ruta.<br /><br />3 - Respecto a la funcion API que me cambie el programa predeterminado por defecto para abrir los ficheros pdf sigo sin averiguar nada.<br /><br />GraciasUnknownhttps://www.blogger.com/profile/17285479929291831052noreply@blogger.comtag:blogger.com,1999:blog-4623278671508370136.post-17298437902469841532019-06-29T10:37:18.482+02:002019-06-29T10:37:18.482+02:00Hola,
creo recordar no es configurable la aplicaci...Hola,<br />creo recordar no es configurable la aplicación por defecto<br /><br />Revisaré documentación y si encuentro solución lo comentaré<br /><br />SldsExcelforo - Ismael Romerohttps://www.blogger.com/profile/17680553534095355222noreply@blogger.comtag:blogger.com,1999:blog-4623278671508370136.post-75203497724345795322019-06-29T10:36:01.090+02:002019-06-29T10:36:01.090+02:00Hola,
suponiendo la macro está en el Excel al que ...Hola,<br />suponiendo la macro está en el Excel al que quieres volver<br />Thisworkbook.Hoja1.Activate<br /><br />¿La ruta que emplea para Edge?, a qué te refieres?<br /><br />SldsExcelforo - Ismael Romerohttps://www.blogger.com/profile/17680553534095355222noreply@blogger.comtag:blogger.com,1999:blog-4623278671508370136.post-43284267382191214162019-06-28T18:09:27.898+02:002019-06-28T18:09:27.898+02:002 cuestiones mas...
1- Sabrias cual es la ruta qu...2 cuestiones mas...<br /><br />1- Sabrias cual es la ruta que emplea Microsoft Edge?<br />2- Al ejecutar el codigo indicado en el anterior comentario, a traves de los metodos Hoja1.Activate o Hoja1.cells(1, 1).Select intento que el foco se situe en Excel despues de abrir el pdf pero no lo consigo con dichas lineas de codigo. Que linea de codigo necesitaria para que el foco se situara de nuevo en Excel tras la apertura del fichero pdf?<br /><br />GraciasUnknownhttps://www.blogger.com/profile/17285479929291831052noreply@blogger.comtag:blogger.com,1999:blog-4623278671508370136.post-15902077300219354872019-06-28T17:59:46.747+02:002019-06-28T17:59:46.747+02:00Hola Ismael
Viendo el codigo de esta funcion API ...Hola Ismael<br /><br />Viendo el codigo de esta funcion API veo que la apertura del fichero correspondiente se apertura con el programa que por defecto abre la extension de dicho fichero (que aparece en la opcion Propiedades del menu contextual de dicho fichero)<br /><br />Podrias indicar una funcion API, para que antes de abrir un fichero en cuestion, estableciera como programa de apertura por defecto aquel que le pasemos como ruta a un argumento de la funcion.<br /><br />Estoy intentando abrir ficheros .pdf con el lector de pdfs SumatraPdf ejecutando el siguiente codigo:<br /><br />Dim AppPdf As Object<br />Set AppPdf = CreateObject("Shell.Aplication")<br />AppPdf.Open(Ruta)<br /><br />* Ruta es la ruta del fichero pdf a abrir, incluyendo su extension<br /><br />Es el unico codigo que funciona correctamente pero antes he debido establecer manualmente el programa por defecto que abre los pdf en la opcion Propiedades del menu contextual. Lo que intento es que esta accion manual sea ejecutada tambien por codigo y solo es posible con una funcion API. Seria posible?Unknownhttps://www.blogger.com/profile/17285479929291831052noreply@blogger.comtag:blogger.com,1999:blog-4623278671508370136.post-38410952013692401022018-04-20T08:22:13.767+02:002018-04-20T08:22:13.767+02:00;-)
Muchas gracias!;-)<br />Muchas gracias!Excelforo - Ismael Romerohttps://www.blogger.com/profile/17680553534095355222noreply@blogger.comtag:blogger.com,1999:blog-4623278671508370136.post-15139946886027005732018-04-20T00:34:34.972+02:002018-04-20T00:34:34.972+02:00Hola Ismael, lo máximo tu código, me sirvió muy bi...Hola Ismael, lo máximo tu código, me sirvió muy bien. Muchas gracias por compartir tu conocimiento y experiencia de manera gratuita.Anonymoushttps://www.blogger.com/profile/15905512944460707325noreply@blogger.comtag:blogger.com,1999:blog-4623278671508370136.post-68190594049933635322017-03-04T15:59:02.673+01:002017-03-04T15:59:02.673+01:00;-)
muchas gracias...
Al compartir TODOS aprendemo...;-)<br />muchas gracias...<br />Al compartir TODOS aprendemos<br />Un saludoExcelforo - Ismael Romerohttps://www.blogger.com/profile/17680553534095355222noreply@blogger.comtag:blogger.com,1999:blog-4623278671508370136.post-51197748967523736442017-03-04T12:14:32.086+01:002017-03-04T12:14:32.086+01:00Es grato saber que existe gente con un conocimient...Es grato saber que existe gente con un conocimiento tan basto como tu, dispuesto a compartirlo, mis más sinceras gracias.Shadowhttps://www.blogger.com/profile/00882703506265163991noreply@blogger.comtag:blogger.com,1999:blog-4623278671508370136.post-27948711024448916392016-11-09T18:57:34.197+01:002016-11-09T18:57:34.197+01:00;-)
me alegra haber podido ayudar
Saludos;-)<br />me alegra haber podido ayudar<br />SaludosExcelforo - Ismael Romerohttps://www.blogger.com/profile/17680553534095355222noreply@blogger.comtag:blogger.com,1999:blog-4623278671508370136.post-50755818056911564472016-11-09T12:01:49.425+01:002016-11-09T12:01:49.425+01:00Gracias amigo no me ha funcionado con .jpg y los h...Gracias amigo no me ha funcionado con .jpg y los he modificado en .pdf y de esta forma podemos funcionar con servidores windows server 2013.<br />Eres un tio genial por contestarme tan rapido.<br />Orgulloso de ser Españolhttps://www.blogger.com/profile/00661138467513709142noreply@blogger.comtag:blogger.com,1999:blog-4623278671508370136.post-92220347794117677882016-11-09T09:23:56.264+01:002016-11-09T09:23:56.264+01:00Hola Jorge,
es correcto, ya que en el ejemplo esta...Hola Jorge,<br />es correcto, ya que en el ejemplo estamos utilizando la librería correspondiente a 32 bits (justo en la línea que indicas).. aunque en teoría la de 32bits debería funcionar también en sistemas de 64 bits.<br />Prueba de todas formas comenzando por:<br /><b>Private Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (....</b><br />es decir, añadiendo <b>PtrSafe</b> antes de la palabra Function<br /><br />con esto debería asegurarse el correcto funcionamiento<br /><br />SaludosExcelforo - Ismael Romerohttps://www.blogger.com/profile/17680553534095355222noreply@blogger.comtag:blogger.com,1999:blog-4623278671508370136.post-45172603222187499052016-11-09T07:52:29.061+01:002016-11-09T07:52:29.061+01:00Tengo el problema que cuando se abre el fichero .j...Tengo el problema que cuando se abre el fichero .jpg con el visualizador de imagenes de windows en sistemas de 32bit lo hace bien pero en sistemas de 64bit puros como es el Windows Server 2013, no me funciona dándome el error en la linea Lib "shell32.dll".<br />Por favor me pueden ayudar.Orgulloso de ser Españolhttps://www.blogger.com/profile/00661138467513709142noreply@blogger.comtag:blogger.com,1999:blog-4623278671508370136.post-4462682376967257922016-09-23T09:58:15.576+02:002016-09-23T09:58:15.576+02:00Hola Alexander,
sí, claro es posible.. depende de ...Hola Alexander,<br />sí, claro es posible.. depende de la aplicación que quieras cerrar se suele emplear una u otra manera, por ejemplo para paquete Office se emplea el método:<br /><b>.Quit</b><br />en otros casos <b>.Terminate</b>...<br /><br />Espero te oriente<br />SaludosExcelforo - Ismael Romerohttps://www.blogger.com/profile/17680553534095355222noreply@blogger.comtag:blogger.com,1999:blog-4623278671508370136.post-24728674617889327272016-09-19T21:38:52.420+02:002016-09-19T21:38:52.420+02:00Hola buenas, gracias por la explicación, amigo una...Hola buenas, gracias por la explicación, amigo una pregunta, es posible también cerrar una aplicación desde el excel, o sea, que así mismo como uno la puede abrir, la pueda cerrar, muchas graciasAnonymoushttps://www.blogger.com/profile/02055029363690557108noreply@blogger.comtag:blogger.com,1999:blog-4623278671508370136.post-18073164857119867962015-10-10T09:43:10.322+02:002015-10-10T09:43:10.322+02:00Hola Daniel,
a priori te serviría la macro expuest...Hola Daniel,<br />a priori te serviría la macro expuesta en el post.. en todo caso cambiando la línea 18:<br />strFile = "E:\excelforo\Fotos\" & Target.Value <br />por tu particularidad:<br />strFile = "C:\BD\" & TextBox1.Value<br /><br />OJO asegúrate cómo se llama tu control<br />SaludosExcelforo - Ismael Romerohttps://www.blogger.com/profile/17680553534095355222noreply@blogger.comtag:blogger.com,1999:blog-4623278671508370136.post-90479407641717625172015-10-09T22:02:24.097+02:002015-10-09T22:02:24.097+02:00Buenas tardes, Ismael, podrías apoyarme para abrir...Buenas tardes, Ismael, podrías apoyarme para abrir un archivo en formato pdf, la situación es esta: capturó un número en un textbox y ese numero es el nombre del archivo en pdf, obviamente pues va a estar cambiando el nombre del archivo, soy principiante en esto y los archivos pdf están en una carpeta en C:\BDAnonymoushttps://www.blogger.com/profile/03012802271914339466noreply@blogger.comtag:blogger.com,1999:blog-4623278671508370136.post-89066002897993578072015-06-05T09:32:42.691+02:002015-06-05T09:32:42.691+02:00Buenos días Oscar,
esta API controla la impresora ...Buenos días Oscar,<br />esta API controla la impresora y no la configuración, date cuenta que el control sobre otras aplicaciones (Adobe en este caso) desde Excel es limitado...<br />No creo posible tal cosa... salvo mejor opinion<br /><br />Lo siento<br />un saludoExcelforo - Ismael Romerohttps://www.blogger.com/profile/17680553534095355222noreply@blogger.comtag:blogger.com,1999:blog-4623278671508370136.post-44969277402884160482015-06-04T17:28:51.121+02:002015-06-04T17:28:51.121+02:00Buenos días.
Tengo una macro que imprime con esta ...Buenos días.<br />Tengo una macro que imprime con esta API, los archivos PDF´s, pero dado que la impresora predeterminada está configurada para impresión a una cara no puedo hacer que me imprima uno o varios de los archivos a doble cara. Es decir, necesito que el primer archivo lo imprima a una cara y el segundo a doble cara. GraciasAnonymoushttps://www.blogger.com/profile/06590470736859550524noreply@blogger.comtag:blogger.com,1999:blog-4623278671508370136.post-63745414728969979982015-01-27T21:04:39.873+01:002015-01-27T21:04:39.873+01:00Por lo que entiendo quieres abrir el fichero que s...Por lo que entiendo quieres abrir el fichero que se encuentra en la ubicación del hipervínculo...<br />podrías tomar la dirección de hipervínculo como variable, e incluirlo directamente en el procedimiento descrito en el post.<br /><br />También podrías usar directamente el método .Open del objeto Workbook.<br /><br />Espero haberte orientado esta vez.<br />SaludosExcelforo - Ismael Romerohttps://www.blogger.com/profile/17680553534095355222noreply@blogger.comtag:blogger.com,1999:blog-4623278671508370136.post-34291040738517394942015-01-27T13:48:05.217+01:002015-01-27T13:48:05.217+01:00Gracias por la respuesta, disculpa si no me expres...Gracias por la respuesta, disculpa si no me exprese bien, a ver si me aclaras un poco mas la idea (quede plop con lo de la declaración).<br /><br />por ejemplo, una de las macro que uso es así (comento todas las lineas en mis macro, mañas mías)<br /><br />Sub opa()<br /><br /> 'no queremos que muestre la operacion<br /> Application.ScreenUpdating = False<br /> 'nos dirigimos a los links, como la pestaña esta oculta, la mostramos<br /> 'seleccionamos los links y trabajamos en ellos, uno por vez<br /> Range("X2").Select<br /> Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True<br /> 'tiempo de espera mientras se abre el reporte CMS<br /> Application.Wait (Now + TimeValue("00:00:5"))<br /> 'selecciona y trabaja en la pestaña oculta<br /> Sheets("CMS").Visible = True<br /> Sheets("CMS").Select<br /> Range("A1:AI25").Select<br /> 'limpiamos lo que ya este, en caso de error<br /> Selection.ClearContents<br />....<br /><br />en que parte debería agregar lo que mencionas? suponiendo que el LINK de la celda X2 es "C:/texto.txt"<br />kazunohttps://www.blogger.com/profile/11482593905754376292noreply@blogger.comtag:blogger.com,1999:blog-4623278671508370136.post-39592747626665221032015-01-24T10:09:56.322+01:002015-01-24T10:09:56.322+01:00Hola Kazuno,
No sé exactamente a qué te refieres c...Hola Kazuno,<br />No sé exactamente a qué te refieres con tu pregunta ??<br />pero entiendo tendrás tu macro en un módulo estándar.. asi que incorpora al inicio del módulo la declaración de la función:<br />Private Declare Function ShellExecute ....<br /><br />y el cuerpo del procedimiento Sub que aparece en lugar de tu instrucción para abrir los ficheros.<br /><br />Un saludoExcelforo - Ismael Romerohttps://www.blogger.com/profile/17680553534095355222noreply@blogger.comtag:blogger.com,1999:blog-4623278671508370136.post-66173591017115156692015-01-23T15:52:18.130+01:002015-01-23T15:52:18.130+01:00Estimado, me has salvado la mitad de un quebradero...Estimado, me has salvado la mitad de un quebradero de cabeza que tengo hace meses, he aprendido excel sobre la marcha y muchos temas no manejo muy bien.<br /><br />tengo un informe con una macro que dispara a través de hipervinculos unos archivos .REP, estos a su vez exportan datos a unos TXT que es desde donde luego excel obtiene la información, el problema es que debo a cada instante aceptar la alerta de ejecución de hipervinculo, pero con el código que dejaste los archivos se ejecutan sin mas, la pregunta es como puedo agregar esto a mi macro?kazunohttps://www.blogger.com/profile/11482593905754376292noreply@blogger.comtag:blogger.com,1999:blog-4623278671508370136.post-78503853222889631272015-01-23T15:46:58.509+01:002015-01-23T15:46:58.509+01:00Este comentario ha sido eliminado por el autor.kazunohttps://www.blogger.com/profile/11482593905754376292noreply@blogger.comtag:blogger.com,1999:blog-4623278671508370136.post-70926345038537206222014-10-09T08:41:16.385+02:002014-10-09T08:41:16.385+02:00Pues no recuerdo muy bien..
es un código, que como...Pues no recuerdo muy bien..<br />es un código, que como te indicaba, es algo viejo.. y me parece era específico para máquinas de 32 bits.<br />Pero en principio, es tal cual, cambiando 'nombrearchivo' por el nombre de tu fichero.<br /><br />SaludosExcelforo - Ismael Romerohttps://www.blogger.com/profile/17680553534095355222noreply@blogger.com