Recientemente un usuario realizaba una consulta sobre la manera de construir una macro que convirtiera el valor de una celda en un hipervícunlo hacia un fichero localizado en una carpeta de nuestro Pc.
Hace ya un año expliqué un planteamiento similar, pero utilizando sólo las herramientas estándar, la función HIPERVINCULO y la Validación de datos (ver entrada). Sin embargo, hoy aplicaremos un método bastante sencillo en nuestro procedimiento, el objeto Hyperlinks, en concreto con el método Add:
expresión.Add(Anchor, Address, SubAddress, ScreenTip, TextToDisplay)
El código que insertaremos en la Hoja1 (en la hoja donde queramos se ejecute) del Explorador de proyectos del Editor de VBA, formando nuestra macro de Excel, con un evento SelectionChange, quedando:
Estaríamos listos para comprobar su funcionamiento. Para cualquier celda con valor en la columna X ó Y, de la Hoja1, se convierte en un hipervínculo que relaciona con el fichero del mismo nombre que el valor de la celda, localizado en la carpeta E:\excelforo\ (en mi ejemplo).
...Quiero hacer una macro que coja el nombre que tengo escrito en una celda y le haga un hipervínculo a un achivo que habrá en una carpeta "X2" dónde habrá un archivo con el mismo nombre que yo he puesto en la celga (.html); [...] de manera que sólo active el hipervínculo en caso que la celda activa esté en la columna X ó Y... |
Hace ya un año expliqué un planteamiento similar, pero utilizando sólo las herramientas estándar, la función HIPERVINCULO y la Validación de datos (ver entrada). Sin embargo, hoy aplicaremos un método bastante sencillo en nuestro procedimiento, el objeto Hyperlinks, en concreto con el método Add:
expresión.Add(Anchor, Address, SubAddress, ScreenTip, TextToDisplay)
El código que insertaremos en la Hoja1 (en la hoja donde queramos se ejecute) del Explorador de proyectos del Editor de VBA, formando nuestra macro de Excel, con un evento SelectionChange, quedando:
Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'verificamos que sólo actue si nos encontramos en las columnas X ó Y If Not Intersect(Target, Range("X:Y")) Is Nothing Then 'asignamos variables a la ruta de nuestro equipo ruta = "E:\excelforo\" 'y asignamos como nombre del fichero a vincular el nombre de la celda seleccionada fichero = Target.Value direccion = ruta & fichero 'depuramos posibles errores, en caso que la celda está vacía salimos de la rutina If Target.Value = "" Then Exit Sub Else 'si la celda tiene algún valor, lo convertimos en un hipervínculo 'relacionándolo con el fichero situado en la carpeta y con nombre especificado. ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:=direccion, TextToDisplay:=fichero End If End If End Sub
Estaríamos listos para comprobar su funcionamiento. Para cualquier celda con valor en la columna X ó Y, de la Hoja1, se convierte en un hipervínculo que relaciona con el fichero del mismo nombre que el valor de la celda, localizado en la carpeta E:\excelforo\ (en mi ejemplo).
Buenas tardes:estaba buscando hacer exáctamente esto pero me surge una duda, (no estoy muy acostumbrado a trabajar con macros):
ResponderEliminarHe escrito la macro según viene y únicamente he puesto el nombre de la ruta donde están los archivos.
Vuelvo al excel y para que se vinculen tengo que pinchar en cada una de las celdas de X donde están los nombres de los archivos y de esta manera me lo vincula uno a uno. Pero si quiero seleccionar todos (seleccionando y arrastrando)me da un error de ejecución 13 y se me marca en amarillo la línea: dirección=ruta&fichero
El problema también es que si hay un nombre que no coincide con algún archivo de la carpeta de C: también me crea un hipervínculo pero luego al pinchar me dice que (logicamente porque no existe)"no se puede abrir el archivo especificado"
¿Estoy haciendo algo mal?
Un saludo y gracias
Hola Antonio,
Eliminarbueno, lo que hace esta macro en concreto es vincular una única celda con un fichero existente en una ruta dada. Si seleccionas un grupo de celdas estás intentando construir una dirección imposible.
Si lo que pretendes es convertir una serie de celdas en hipervínculos mediante una macro, tendrías que cambiar la estructura de la macro, incorporando por ejemplo una sentencia FOR EACH NEXT que recorra celda a celda la selección, y fuera convirtiéndolas en hipervínculo... siempre que exista el fichero.
Para evitar el problema, quizá se pudiera comprobar previamente que existe ese fichero con ese nombre, y en caso negativo dejar sin hipervínculo esa celda.
Slds
Saludos: una consulta
ResponderEliminarcada vez que hago clic en el hipervinculo me aparece un mensaje de seguridad, como puedo hacer para deshabilitar el mensaje
Hola Gustavo!
Eliminar¿qué mensaje es el que te aparece?.
Es posible deshabilitar, mediante una sencilla macro los mensajes de advertencia o seguridad (pero incialmente todos, sin distinguir). Esto significaría que mensajes cotideáneos no se mostrarían, pudiendo llevarnos a inconsistencias en nuestros libros. No suelo recomendar esta opción.
Podría ser en un evento _Open:
Private Sub Workbook_Open()
Application.DisplayAlerts = False
End Sub
y en otro _Close:
Private Sub Workbook_BeforeClose(Cancel as Boolean)
Application.DisplayAlerts = True
End Sub
Auque yo analizaría antes que todo esto qué tipo de mensaje de error aparece, ya que quizá sea más sencillo y práctico corregir el origen del mensaje de seguridad.
Slds
Excelente aporte!
ResponderEliminarIgual ando trabajando con hipervinculos, pero en mi caso necesito hacer algo que está un poco más complejo. Lo que requiero es convertir en hipervinculo el resultado de un conteo (CONTAR.SI.CONJUNTO), es decir, tengo una tabla con de donde cuento la cantidad de productos en base a un par de criterios (ciudad, fecha y tipo), el resultado de ese conteo necesito convertirlo en un hipervinculo que apunte directo a la parte de la tabla de donde se contaron. Por ejemplo:
CIUDAD | PRODUCTO | FECHA |
ALMERIA |PROD1 |02/09/2013
GERONA |PROD2 |02/09/2013
ALMERIA |PROD1 |02/09/2013
GERONA |PROD2 |03/09/2013
ALMERIA |PROD1 |04/09/2013
Entonces, si aplico el contar si conjunto en base a la ciudad ALMERIA, el producto PROD1 y la fecha 02/09/2013, el resultado nos dará 2, este 2 necesito convertirlo en un hipervinculo que me mande exactamente a donde estan estos registros de donde salio la cuenta. Tomese en cuenta que el CONTAR.SI.CONJUNTO se encuentra en otra pestaña.
Saludos
Hola Martín,
Eliminarse me ocurre, al tener diferentes campos para obtener un 'registro único', que realices un concatenado auxiliar, sobre el que realizar la búsqueda y poder así localizar una posición de coincidencia, ya con esa dirección podrás construir tu hipervínculo...
Pero ojo, el hipervínculo sólo te puede llevar a una dirección!!!, con lo que te propongo, sería la primera coincidencia encontrada en la búsqueda sobre el concatenado.
Espero te haya orientado.
Hola Romero:
ResponderEliminarTengo una pregunta un poco loca.
Es posible ejecutar una macro con un hipervinculo, o alguna manera de detectar el momento en que se le da clic en un hipervinculo.
Hola Jumartos,
Eliminares posible asociar un evento DoubleClick a una celda/s para ejecutar un procedimiento... Este evento iría en el código de la hoja:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
' el código...
End Sub
para concretar más las celdas podrías aplicar dentro del código un método intersect que restrinja el rango sobre el que actuar.
Saludos
Hola, no se si podriais ayudarme... Quiero poner un hipervinculo que me redireccione a una página web desde un campo de una tabla dinámica creada con Power Pivot. Gracias.
ResponderEliminarHola María,
Eliminarcon sinceridad no creo sea posible generar un hipervínculo sobre una Tabla dinámica ('normal' o generada con PowerPivot)...
Lo siento, pero debemos reconocer algunos límites en Excel.
Un cordial saludo y mucha suerte!
Hola Ismael,
ResponderEliminarSoy nuevo en VBA y estoy preparando un archivo el cual parte de una base de datos y se crea una tabla dinamica, por tema de formatos esta se replica en una pestaña extra. No obstante quisiera vincular la información de esta última pestaña con sus correspondientes en la tabla dinamica que como bien sabemos pueden estar en diferentes celdas.
Muchas gracias de antemano, disculpa las molestías
Hola!
Eliminardiscúlpame pero no comprendo..
Entiendo que sobre un origen de datos construyes una tabla dinámica... ¿y esta tabla dinámica la copias (supondré como valores) en otra hoja de tu libro ??...
Me pierdo con el objetivo, 'vincular la última información de la segunda hoja' son sus datos correspondientes de la tabla dinámica ???
Si he entendido bien, no hace falta ninguna macros, basta que actives la Opción de Tabla dinámica para Generar GetPivotData, esto te permitirá, vincular celda a celda desde cualquier sitio (tu segunda hoja) a la información contenida en tu TD, respecto a las agrupaciones, filtros y resúmenes de valores.
Saludos cordiales
Muchas Gracias Ismael,
ResponderEliminarla segunda hoja la construyo a partir de referencias relativas por lo que utilizó el index y match para obtener la información (desde la macro) y colocarla en la hoja 2, por motivos de formato están en diferente orden y ubicación.
No había escuchado de la opción GetPivotData, me podrías explicar un poco más?
Gracias y disculpa las molestias
Esa opción de Genera GetPivotData se activa desde las Opciones de tabla dinámica; una vez está activa puedes referirte a cruces concretos de la tabla dinámica (estén en las celdas que estén), a modo de vínculo...
EliminarEn la hoja de cálculo aparecerá la función IMPORTARDATOSDINAMICOS(...) haciendo referencia a esa TD.
Activa la opción y desde cualquier celda selecciona una celda que te interese de la TD, verás enseguida cómo funciona...
además es posible modificarla (empleando/anidando otras funciones) para adaptarla.
Trataré de subir al blog una entrada poniendo algún ejemplo sobre el asunto.
Saludos
Muchas gracias
ResponderEliminarHola Ismael,
ResponderEliminarPrimero de todo gracias por el aporte, es justo lo que buscaba. No obstante no consigo que se abran los archivos y creo que es porque en la ruta que genera la macro no especifica la extensión del archivo.
Me explico: He creado una hoja (BDFactures) donde automáticamente se añaden filas con el contenido de otra hoja (Factura), a la par, se crea un archivo PDF el nombre del cual es el mismo que el número de factura y se guarda en una carpeta especificada. Ahora he añadido tu macro a la hoja (BDFactures) y funciona pero no del todo. Cuando selecciono la celda donde está el número de factura se crea el Hipervínculo y la ruta es la correcta pero cuando pincho me dice: "No se puede abrir el archivo especificado" . Al modificar la ruta del hipervínculo solo añadiendo la extensión ".pdf" ya me funciona.
¿Hay algún modo de solucionarlo?
Gracias.
Hola Ismael,
EliminarComo pensaba, el fallo estaba en la extensión. He modificado la linea que asigna el nombre a vincular con el archivo añadiendo (& ".pdf") y ahora sí me funciona. Pero me da error cuando selecciono una fila entera, me aparece este mensaje: "Se ha producido el error '13' en tiempo de ejecución: No coinciden los tipos."
Cuando le doy a depurar me marca la linea modificada.
De momento no me molesta mucho porque no tengo intención de seleccionar las filas enteras, pero me gustaría poder solucionarlo de alguna manera.
Esta es la linea modificada:
fichero = Target.Value
direccion = ruta & fichero & ".pdf"
Gracias.
Hola Xavi,
Eliminarpara solucionar el segundo error (al seleccionar la fila entera o varias celdas al tiempo), podrías añadir un nuevo condicional, de tal manera que cuando tuvieras más de una celda seleccionada no hiciera nada...
Algo de este estilo:
Set isect = Application.Intersect(Target, Range("C:C"))
If Not isect Is Nothing Then
If Selection.Cells.Count = 1 Then
If Target.Value = "" Then
Exit Sub
Else
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:=direccion, TextToDisplay:=fichero
End If
End If
End If
Set isect = Nothing
Creo sería suficiente...
Un saludo
Hola Ismael,
EliminarDobles gracias, por la celeridad y por el contenido.
Funciona a la perfección.
Hola Ismael
ResponderEliminarsabes de alguna forma de generar un hypervinculo que me lleve a una pag. web al apretar un botón
Gracias!!
Hola,
Eliminarte serviría, si quieres emplear macros, la fución VBA hyperlink, en el argumento Address incluye la URL a la que quieras acceder.
Luego de tener creado tu procedimiento Sub podrías asignarlo a un Botón de formulario
Espero haberme explciado
Un cordial saludo
Hola Ismael. Estoy bastante agradecido por tu gran ayuda. Ya los nombres se vuelven hipervinculos y la extension de los archivos es la correcta. Pero tengo un problema, cada vez que doy click sobre la celda o paso sobre ella con las flechas del teclado, se repite la extension del archivo. ASI:
ResponderEliminarhola.docx.docx.docx.docx.docx
Espero puedas ayudarme. Mil Gracias
Hola Daniel,
Eliminarparece que el problema sea que has incluido parte del código en algún bucle, y a la hora de componer el nombre del archivo, repite la extensión...
Habría que ver el código, pero asegúrate que cuando nombras el fichero, queda fuera del bucle que tengas...
Saludos cordiales
Hola, muchas gracias, quería contarle Ismael que ya pude solucionar ese problema. El programas es buenísimo, pero tengo ahora el inconveniente de que al seleccionar toda la columna me sale el "Error 13". Aunque usted ya publico la solución no me sirve o la verdad no se en que parte del programa ubicarla.
EliminarAgradecería cualquier ayuda posible.
Hola Daniel,
Eliminarsi quieres adjúntame el código a
excelforo@gmail.com
y le echo un vistazo.
Slds
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ResponderEliminar'verificamos que sólo actue si nos encontramos en las columnas X ó Y
If Not Intersect(Target, Range("AP:AP")) Is Nothing Then
'asignamos variables a la ruta de nuestro equipo
ruta = "C:\Users\Calidad\Desktop\RECLAMOS-AUDITORIAS\COLOMBIA TELECOMUNICACIONES - TELEFÓNICA MOVIL\SEPTIEMBRE\Santa Marta\PARCIALES\SEGUNDO PARCIAL SEP 2014"
'y asignamos como nombre del fichero a vincular el nombre de la celda seleccionada
fichero = Target.Value
direccion = ruta & fichero
'depuramos posibles errores, en caso que la celda está vacía salimos de la rutina
If Target.Value = "" Then
Exit Sub
Else
'si la celda tiene algún valor, lo convertimos en un hipervínculo
'relacionándolo con el fichero situado en la carpeta y con nombre especificado.
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:=direccion, TextToDisplay:=fichero
End If
End If
End Sub
Para mi caso queda así pero no se porqué no funciona, ayudenme por favor
EliminarHola Juan Carlos,
Eliminarhace falta que tu ruta termine en barra invertida \
ruta = "C:\Users\Calidad\Desktop\RECLAMOS-AUDITORIAS\COLOMBIA TELECOMUNICACIONES - TELEFÓNICA MOVIL\SEPTIEMBRE\Santa Marta\PARCIALES\SEGUNDO PARCIAL SEP 2014\"
Saludos!
Hola Ismael de gran útilidad tu macro, es posible que me ayudes con algo similar respecto al hiperlinks
ResponderEliminartengo el siguiente código que imprime en PDF:
Dim Reader As String, Archivo_PDF As String
Reader = "c:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe"
Range("C2").Select
While ActiveCell <> ""
Archivo_PDF = Chr(34) & ActiveCell.Hyperlinks(1).TextToDisplay & Chr(34)
Shell Reader & " /p /h " & Archivo_PDF
ActiveCell.Offset(1, 0).Select
Wend
Resulta que el imprime muy bien solo cuando doy la ruta en Archivo_PDF
es decir: Archivo_PDF = "C:\Users\gonz\Desktop\Imprimir\DEVOLUCION.pdf"
pero cuando ejecuto tal cual como esta en el código
Archivo_PDF = Chr(34) & ActiveCell.Hyperlinks(1).TextToDisplay & Chr(34)
me genera un mensaje que me informa que el archivo no se encuentra.
la cuestion es que necesito que en la celda activa C2, puede abrir el archivo con el link
lo intente con: Archivo_PDF = Chr(34) & Selection.Hyperlinks(1).Follow & Chr(34)
me habre el archivo pdf pero ya no me imprime, como si lo hace cuando le doy:
Archivo_PDF = "C:\Users\gonz\Desktop\Imprimir\DEVOLUCION.pdf"
agradezco tu ayuda. saludos y gracias por tus macros.
Hola!
Eliminarquizá el fallo esté en que tomas el TextToDisplay de la celda...
Si es un hipervínculo es mejor que tomes su address, así te aseguras te diriges a su dirección/ruta exacta y completa...
Saludos
Hola Ismael, te cuento que funciono perfectamente, el hiperlinks con el address, muchas gracias por tu ayuda, y ahora tengo un error al querer cambiar Range("C2").Select por Range(activecell).Select el cual me aparece como mensaje que "se esperaba función o variable", lo que intento es que tome el rango de la celda activa, tambien lo intente con ActiveCell.Select pero sigue el mismo error. Muchas gracias por tu ayuda.
Eliminar;-)
Eliminar??
con el bucle que ta tenías te irá recorriendo las celdas no vacías desde C2
Range("C2").Select
While ActiveCell <> ""
Archivo_PDF = Chr(34) & ActiveCell.Hyperlinks(1).TextToDisplay & Chr(34)
Shell Reader & " /p /h " & Archivo_PDF
ActiveCell.Offset(1, 0).Select
Wend
Lo siento, pero no comprendo?
Slds
Hola señor ismael disculpe si se repite la consulta pero mi pc esta un pco lento, la volvere a subir, es que me presenta error en la ultima linea (ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:=direccion, TextToDisplay:=fichero), le adjunto el codigo completo , señor ismael le agradeceria me ayudara
ResponderEliminarPrivate Sub Worksheet_SelectionChange(ByVal Target As Range)
'verificamos que sólo actue si nos encontramos en las columnas X ó Y
If Not Intersect(Target, Range("a8:a15")) Is Nothing Then
'asignamos variables a la ruta de nuestro equipo
ruta = "C:\Users\Linea Viva\Desktop\coti\cotizacion\"
'y asignamos como nombre del fichero a vincular el nombre de la celda seleccionada
fichero = Target.Value
direccion = ruta & fichero & ".pdf"
'depuramos posibles errores, en caso que la celda está vacía salimos de la rutina
If Target.Value = "" Then
Exit Sub
Else
'si la celda tiene algún valor, lo convertimos en un hipervínculo
'relacionándolo con el fichero situado en la carpeta y con nombre especificado.
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:=direccion, TextToDisplay:=fichero
End If
End If
End Sub
el valor de la direccion = ruta & fichero & ".pdf", la tome de un comentario del señor Xavi Torrens, vera la carpeta que dice (coti) contiene el excel con la macro y contiene la carpeta cotizacion que es donde estan guardados los pdf que me genera, no se si asi este bien la ruta
ResponderEliminarHola pazalex,
Eliminarhe replicado tu código, cambiando la ruta por una local (y también por otra de escritorio) y funciona perfectamente, esto me hace pensar que o bien existe un error en el nombre del archivo (el que está escrita en la celda) o bien en la ruta...
Saludos
muchas gracias señor ismael, de verdad le agradezco el que usted se tome un espacio en su valioso tiempo para colaborarnos a todos los que a usted le consultamos, este tipo de ayuda que usted presta sin nada a cambio es lo que fomenta el altruismo y nos hace recordar que aun existe personas que dan sin esperar nada a cambio.
ResponderEliminarun abrazo desde Colombia
te podria enviar el archivo para que le des un vistazo?, si fuera asi a que correo podria enviarlo de verdad m,e da pena molestarlo, pero seria de muchisima ayuda
ResponderEliminarpuedes enviarlo a
Eliminarexcelforo@gmail.com
pero ya te figo, no parece problema del código (que funciona) y sí del nombre del fichero o ruta
Saludos cordiales
Amigo ismael cordial saludo desde colombia queria hacerte una consulta con otro tema, a ver si me puedo explicar.
ResponderEliminaren la hoja 1, tengo un boton con una macro para insertar una nueva fila desde la fila 8. Hasta hay no hay inconveniente, en el range("a8") tengo una validacion de datos por lista que viene de la hoja 2, (alta, media, baja), pero al insertar la nueva fila ya la validacion desaparece y toca nuevamente validar datos desde la barra de menu de datos.
hay forma de que al insertar la nueva fila, esta ingrese con esa validacion de datos al rango a8 ?
Hola,
Eliminarsi donde estás insertando está convertido en Tabla, te arrastra las fórmulas, formatos, validaciones, etc de arriba...
Saludos
Mi amigo gracias!!! eso era sencillamente lo que debia hacer, convertirlo en tabla!
ResponderEliminarBuen dia Ismael, Gracias por tu aporte de antemano, quisiera hacer una macro donde me lleve de un click , un boton o elemento en powerpoint a un lugar especifico en excel, se que con hyperlink se puede colocando la ruta el fichero y al final un #mas ubicacion. por ejemplo archivo.xml#e33 , pero es un poco tedioso darle clik derecho abrir hyperlink. Saludos.
ResponderEliminarHola Cindy,
Eliminarlos procedimientos en PowerPoint son algo distintos de Excel...será mejor consultes en un Foro específico de PowerPoint.
Saludos cordiales
Hola Romero tengo una problema tenia un libro con Hipervinculos que habia llenado una serie de usuarios, no se que sucedio pero los hipervinculos se grabaron con otra ruta y ya no puedo acceder a los las rutas
ResponderEliminarejemplo tenia
L:\Common\BusinessUnits\CSC\3)Quality\MSA Projects\Star 2\1) ICT\ICT15\MSA_STAR2_ICT15_Abr14.pdf
y ahora
C:\Users\uidw8976\AppData\Roaming\Microsoft\Excel\Star 2\1) ICT\ICT15\MSA_STAR2_ICT15_Abr14.pdf
quito
L:\Common\BusinessUnits\CSC\3)Quality\MSA Projects
y agrego
C:\Users\uidw8976\AppData\Roaming\Microsoft\Excel
¿como puedo recuperar los hipervinculos?
Hola Maldonado,
Eliminarentiendo el cambio es constante en todos los casos.
Si es así, para la hoja activa:
Sub cambiaLink()
Dim hLink As Hyperlink
For Each hLink In ActiveSheet.Hyperlinks
hLink.SubAddress = Replace(hLink.SubAddress, "C:\Users\uidw8976\AppData\Roaming\Microsoft\Excel", "L:\Common\BusinessUnits\CSC\3)Quality\MSA Projects")
Next hLink
End Sub
Espero te sirva.
Slds
Buenas Ismael, de antemano agradecerte que dediques tu tiempo a responder todas las dudas que tenemos tantos usuarios, es un esfuerzo increíble.
ResponderEliminarA ver si puedes resolver la mía, te cuento:
Estoy trabajando con Power Pivot y necesito exportar unos datos procedentes de una tabla Excel. Los datos siempre están en las mismas celdas pero, el problema es que el archivo Excel cambia de nombre cada semana, es decir, cada semana es uno nuevo con los valores actualizados para esa semana. Por tanto, el nombre del archivo Excel va cambiando (S1, S2, S3...).
Me han comentado que existe una función que vincula el archivo Excel (cuyo nombre de origen va cambiando) y te calcula el cambio de semana, buscando así el documento que corresponde a cada semana. Siempre coge los valores de las mismas celdas pero cambia el nombre de origen del archivo.
No encuentro cuál es la función. ¿Podrías ayudarme a resolver mi problema?
Muchísimas gracias!!!
Hola Laura,
Eliminarrealmente si hablas de PowerPivot estaríamos hablando de conexiones (cadenas de conexión) o vínculos externos, no creo una función te solucione el problema a priori...
Quizá la función a que te refieres es la función INDIRECTO en la que puedes construir una ruta variable, algo así:
=INDIRECTO("E:\Excelforo\'[S"&NUM.DE.SEMANA(HOY();2)&"]Hoja2'!A1:A10")
También puedes buscar entre las funciones de la categoría CUBO:
CONJUNTOCUBO, etc...
Es un problema muy concreto.. siento no poder decirte algo más
:(
un saludo
Antes que nada un cordial y atento saludo Sr. Ismael!
ResponderEliminarTengo un libro en excel en el cual una de las hojas tiene un inventario por empleado, ya realice un programa en vba extension de excel el cual me busca los comentarios que tienen cada uno de ellos y me muestra su ubicacion ( Su celda) en un listbox. En mi caso necesito un hipervinculo en un commandbutton que al ejecutarlo me lleve a la celda mostrada en el listbox
De antemano muchas gracias por su ayuda y que tenga un feliz dia.
Hola,
Eliminarsi ya tiene su ubicación en el listbox o donde sea, sólo toma ese literal para convertirlo en Rango o Celda (Range o Cells) para asociarlo al evento _Click del ListBox y que realice la acción de seleccionar dicho destino:
Algo así:
Private Sub ListBox1_Click()
Range(ListBox1.Value).Select
End Sub
suponiendo, como indicabas que el listbox esté cargado con las ubicaciones (por ejemplo, del tipo A1, B2, C4, etc.)
Saludos
Muchas gracias sr. Ismael... me sirvio de mucho su ayuda. Ahora tengo un problemita, me estan pidiendo que a el programa le haga unas validaciones a la hora de ingresar el nombre del empleado, o sea, que sea como sea que el usuario introduzca el nombre se lo localize en el inventario. Por ejemplo: Luis Gomez, luis gomez, Luis gomez, luis Gomez, etc... Que puedo hacer en este caso?
EliminarHola,
Eliminarlo más habitual es tratar la información con UCASE o LCASE sobre los campos a comparar, i.e., convertirlo todo a mayúscula o minúscula.
Slds
Muchas graciaa, pero si le soy sincero, no se hacerlo, me gusta la programacion y la entiendo, pero la verdad nunca he trabajado con CASE en VB, me podria decir como hacerlo? Mandarme un codigo o algo por el estilo. De ante mano, muchas gracias por su tiempo y su ayuda.
EliminarHola,
Eliminarno te hablo de CASE (Select case), si no de las funciones UCASE y LCASE...
se aplican simplemente sobre el valor a convertir
UCASE(combobox1.value)
convertiría y trataría el valor devuelto en mayúscula.
Slds
Hola! Y esas funciones pueden usarse juntas sin que una altere a la otra? Y me imagino que eso lo pongo en el textbox en el cual introduzco el nombre del empleado?
Eliminarse trata de homogeneizar el dato, independientemente de cómo lo introduzca el usuario (en cuanto a mayúsculas y minúsculas), emplearás uno u otra (UCASE o LCASE), no las dos a la vez.
EliminarPuedes aplicarlo sobre el textbox para que registre el dato en la hoja de cálculo siempre en mayúscula, asegurándote que siempre se refleja de igual forma...
o también a la hora de realizar búsquedas, etc.
Slds
Buenos días, no tengo experiencia en Macros pero me gustaría crear hipervínculo en 1 Excel de la celda A1:A11251 con archivos pdf que tienen el mismo nombre que las celdas del rango indicado. Me podríais explicar los pasos a seguir para lograrlo? Gracias
ResponderEliminarHola Lucía,
Eliminaren principio el código sería casi idéntico:
Sub vinculo()
ruta = "E:\excelforo\"
for each celda in Range("A1:A11251")
fichero = celda.Value
direccion = ruta & fichero
If celda.Value = "" Then
Exit Sub
Else
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:=direccion, TextToDisplay:=fichero
End If
End If
next celda
end sub
Espero te sirva... Recuerda añadir la ruta donde se encuentren los pdf en lugar de
ruta = "E:\excelforo\"
con la barra \ al final
Saludos
Gracia Ismael, me da un error de complicación: ENd IF sin bloque IF, Qué debería cambiar?
EliminarSaludos y gracias
Se me olvidaba comentar que se pone en amarillo la 1ª línea donde pone Sub vinculo ()
ResponderEliminarHola Lucía,
Eliminarsobra un End if...
elimínalo y te debería funcionar sin problemas
Saludos
Hola Ismael a mi me sale un error diferente
EliminarActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:=direccion, TextToDisplay:=fichero
argumento o procedimeiento no valido me sale tambien erroe de ejcucion y un "5"
Hola José Luís,
Eliminares importante que todas las rutas sean correctas y existan los ficheros.. en caso contrario fallará y aparecerá el depurador...
puedes emplear el depurador de errores:
On error resume next
...
on error goto 0
así conseguirás que las rutas/ficheros no existentes no hagan saltar el depurador.
Saludos
Hola Ismael, me sale el mismo error "5", será que todos los valores son numéricos?, porque ya hice la prueba con valores de texto y así no tengo problema.
EliminarCuando le doy en depurar lo que me selecciona en color amarillo es
"ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:=direccion, TextToDisplay:=fichero"
Porque lo que quiero es no tener que agregar el .pdf en otra celda.
Ejemplo: Celda=234567
ruta = "E:\Usuario Asignado\Escritorio\1\"
For Each celda In Range("B2:B173")
fichero = celda.Value
direccion = ruta & fichero & ".pdf"
If celda.Value = "" Then
Exit Sub
Else
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:=direccion, TextToDisplay:=fichero
End If
Next celda
End Sub
Saludos.
Hola Kar TG,
Eliminarcurioso.. prueba con esto:
Sub xxx()
Dim fichero As String
Dim direccion As String
ruta = "E:\"
For Each celda In Range("a1:a3")
celda.Select
fichero = celda.Value
direccion = ruta & fichero & ".pdf"
If celda.Value = "" Then
Exit Sub
Else
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:=direccion, TextToDisplay:=CStr(fichero & ".")
End If
Next celda
End Sub
Saludos
Hola Ismael
ResponderEliminarMira he desarrollado una macro que crea un archivo nuevo en donde hay hiperlink entre las hojas, lo cree en excel 2010 Español.
El problema viene cuando abren el archivo creado en Brasil, y dan clic a los hiperlink saliendo el Error: Referencia no valida(en portugues)
Creo que podria ser un problema de idiomas, ya que las hojas por defecto se nombran en español Hoja1 y en portugues Plan1.
Me podrias ayudar con esto por favor?
Agradezco tu atencion
Hola Daniel,
Eliminarentiendo que si el vínculo tiene una ruta correcta (incluyendo nombre del Libro y nombre de la hoja), no importa en qué idioma estés trabajando...
Yo verificaría que la ruta está tomando exactamente la ubicación de libro así como el nombre de la hoja y celda... que el nombre de la hoja sea Hoja1 o Plan1 es intrascendente para el vínculo.
Saludos
Gracias por tu respuesta Ismael, es bien extraño ya que ese mismo documento lo abren usuarios en Chile Colombia Argentina y Peru, pero les es imposible para Brasil.
EliminarUna prueba que hice fue crear un hiperlink manualmente dentro del mismo archivo y si funciono.
Gracias nuevamente por tu preocupacion.
Sí que es raro....
Eliminar:(
Suerte!
Buenos dias Ismael, tengo una macro la cual alimenta una base de datos de la cual una columna es referente a las facturas, las cuales quisiera saber si se puede generar un hipervínculo a una pagina web que contiene el mismo folio de factura en archivo pdf, agradecería mucho tu apoyo.
ResponderEliminarSaludos y Gracias de antemano.
Hola,
Eliminaren principio cualquier fichero o 'cosa' colgada en una web tiene una URL.. por tanto solo debes conocer dicha URL y realizar un hipervínculo a dicha dirección.
Sigue las indicaciones de este mismo post...
Espero te sirva la pista
Saludos
Buen dia!! me podria ayudar me funciono perfecto pero ahora requiero que se vinculen de dos celdas a dos diferentes carpetas.. es decir la informacion de la celda A1 a "x" carpeta y la informacion de otra celda B1 a "y" carpeta..
ResponderEliminarNo se si me explique..
De antemano muchas gracias!!
Salduso!!
Hola Antonio,
Eliminarsi requieres dos direcciones distintas para dos vínculos, necesitarás las dos rutas, y una condición que derive a una u otra (con un IF.. THEN)
Saludos
me podrias decir donde es que tengo que inserta esa condicion.. realmente no se mucho sobre programacion...
EliminarGracias!!
Hola Antonio,
Eliminarpodría ser en:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("X:Y")) Is Nothing Then
ruta1 = "E:\excelforo\"
RUTA2 = "E:\segundaruta\"
fichero = Target.Value
direccion1 = ruta1 & fichero
DIRECCION2 = ruta2 & fichero
If Target.Value = "" Then
Exit Sub
Else
IF [aquí la condición que derive a la ruta 1] THEN
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:=direccion1, TextToDisplay:=fichero
ELSEIF [aquí la condición que derive a la ruta 2] THEN
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:=direccion2, TextToDisplay:=fichero
ENDIF
End If
End If
End Sub
algo así te debería funcionar.
Slds
UNA PREGUNTOTA
ResponderEliminarPrimero que nada la macro funciona exelente bueno asta cierto punto, si me crea los hipervinculos que necesito el problema es que al dar click sobre este me sale un mensaje que dice: "No se puede abrir el archivo especificado" ya cree los archivos con dichos nombres creo hipervinculos manualmente y si me redirecciona creo que el problema es que con los hipervinculos de la macro la direcion del archivo termina asi: TARIMA DE MADERA .xlsx Y con el hipervinculo manual asi: TARIMA DE MADERA.xlsx osea que en de la macro me crea un espaio entre la terminacion y el nombre del archivo y con el manual no entonces quiero saber si es ese el problema o no, mi archivo que crea la macro esta en una celda con formula BUSCARV
Hola Diana,
Eliminarsi determinaste que el problema es que te aparece un espacio en blanco al final del nombre, seguramente es que efectivamente, tu función BUSCARV toma el dato con ese espacio..
No es problema en sí mismo de la macro (aunque se podría intentar ajustar para solucionarlo), si no del origen de datos, donde el nombre del fichero arrastra ese espacio en blanco al final que genera el error...
Solución, elimina ese espacio sobrante con la función ESPACIOS:
=ESPACIOS(BUSCARV(...))
Saludos
Excelente
Eliminarmuchísimas gracias era exactamente lo que faltaba, y pensar que era con algo tan simple
Este comentario ha sido eliminado por el autor.
ResponderEliminarSaludos,
ResponderEliminarTengo un problema, que no sé si está relacionado con las macros.
Hace ya dos años creé una hoja excel, con la función de "base de datos", es decir voy creando filas, con diferentes clientes y su información. Hace poco le puse unas macros, para que al pinchar un botón, aparezca sola la información relacionada con el código, esta información se encuentra en otro excel.
Hasta aquí todo bién, el problema ocurre, cuando creo hipervinculos (sea con o sin la macro)en un código, ya que al principio funciona bien. Pero al cabo de unos días o semanas, cuando voy a abrir el mismo hiprvinculo, me lleva al hipervinculo de otro código, sin relación alguna. Es como si se intercambiaran o traspapelaran los hipervinculos entre ellos.
He probado diferentes soluciones basada en las hipotesis siguientes: que pase por culpa de filtrar mediante la función de filtro de excel, he estado mirando que en opciones/Al calcular este libro... Y sale un cuadradito que dice Actualizar vínculos a otros documentos. Pero no consigo que los hipervínculos permanezacan en su lugar.
Por ultimo ahora me pregunto si el problema puede venir dado por las macros que tengo en el éxcel.
Perdón por el parrafón, pero me tiene desesperado este problema.
Muchas gracias!
Hola Octavi,
Eliminartendría que ver la situación completa para entender bien la situación (y el problema)..
¿son hipervínculos sobre la celda o generados con la función HIPERVINCULO?
Slds
Este comentario ha sido eliminado por el autor.
EliminarHola Ismael,
EliminarSon sobre la celda, la semana pasada descubrí la función hipervínculo y estoy probando.
Saludos,
Deberías quizá gestionarlo con la función HIPERVINCULO, donde puedes controlar más fácilmente ubicación y texto mostrado...
EliminarSdls
Es lo que estoy probando actualmente, haber si en unas semanas siguen los hipervínculos en su sitio.
EliminarGracias
Este comentario ha sido eliminado por el autor.
ResponderEliminarMuchas gracias Ismael, fue de mucha utilidad la información que encontré en este foro.
ResponderEliminarGracias!!
EliminarHOLA ISMAEL TENGO UN FORMULARIO EN EXCEL Y EN UNA CELDA TENGO LA SIGUIENTE FORMULA =SI(B2="","",HIPERVINCULO(CONCATENAR("C:\Users\Desktop\OTROS INGREOS 2016\ENERO\FACTURACIÓN\FACTURAS ENERO","\",B2,".pdf"),B2)), Y NECESITO QUE EN EL FORMULARIO EN EL TextBox10_Change() ME APAREZCA COMO HIPERVINCULO PARA ABRIR EL ARCHIVO EN PDF, ESTOY OCUPANDO LO SIGUIENTE PARA INDICAR DE QUE CELDALAS DEBE MOSTRAR LA INFORMACION EL FORMULARIO
ResponderEliminarHola,
Eliminares posible replicar el comportamiento del hipervínculo con el método .FollowHyperlink, puedes ver un ejemplo en:
http://excelforo.blogspot.com.es/2015/10/vba-un-hipervinculo-dentro-de-un-listbox.html
Saludos
BUEN DIA. OK, LO INTENTO Y TE AVISO, MUCHISIMAS GRACIAS
EliminarBUEN DIA SE ME OLVIDO COMENTARTE ES UN HIPERVINCULO DINAMICO, ES DECIR SELECCIONO UNA OPCION Y ME CARGA UNA INFORMACIÓN, SELECCIONO OTRA OPCION Y ME CARGA INFORMACIÓN DISTINTA, PARA ELLO ESTOY OCUPANDO
ResponderEliminarIf CheckBox1.Value = True Then
ActiveCell.Offset(0, -2) = TextBox2.Value
ActiveCell.Offset(0, -1) = TextBox3.Value
ActiveCell.Offset(0, 1) = TextBox4.Value, PARA INDICAR QUE CELDA DEBE CARGAR Y ENTRE ESA CARGA Y MEDIANTE ESA DECLARACIÓN DEBE CARGAR LA FORMULA =SI(B2="","",HIPERVINCULO(CONCATENAR("C:\Users\Desktop\OTROS INGREOS 2016\ENERO\FACTURACIÓN\FACTURAS ENERO","\",B2,".pdf"),B2)) Y ABRIR EL HIPERVINCULO.
SALUDOS.
Hola,
Eliminarla opción que te comenté de .FollowHyperlink no requiere del uso de funciones... lo que sería raro (quizá inposible) dentro de un ListBox en un Userform
Slds
Este comentario ha sido eliminado por el autor.
EliminarHola Ismael:
ResponderEliminarTengo una consulta.....necesito asignar desde un boton de comando un hipervinculo desde la web (donde debo elegir entre varios archivos de google drive) a una forma que tengo en una celda, me puedes ayudar con una macro para lograrlo?
De antemano te agradezco enormemente tu buena disposición...
Hola,
Eliminarno tengo claro muy bien el funcionamiento de Google Drive (no lo uso), pero entiendo que tendrá como acceso una URL, por lo que esa sería la dirección del hipervínculo...
Si esto es así, solo debes añadir ésta en la macro del ejemplo...
Siento no poder decirte mucho más.
Un saludo y suerte!
Este comentario ha sido eliminado por el autor.
ResponderEliminarHola Ismael. Gracias por el código.
ResponderEliminarMe funciona pero tengo un problema
Ingreso una palabra en la celda donde quiero que convierta a hipervinculo, pero me cambia la palabra por otra
Espero puedas ayudar. Gracias
Hola Ryochi,
Eliminarsi te fijas la línea de código que genera el hipervinculo es:
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:=direccion, TextToDisplay:=fichero
y tiene el parámetro TextToDisplay que será el texto a mostrar...
Esa es la parte que debes controlar para que la celda refleje la palabra que necesites.
Saludos
Buenas tardes Ismael, soy nuevo en el tema de las macros, hace un par de dias que intento crear una macro, pero no consigo el resultado esperado. me gustaria conseguir que al seleccionar un hypervinculo de una hoja de calculo el contenido de la celda del hypervinculo y el de un par de celdas de la misma fila se copien en otras celdas. gracias de antemano.
ResponderEliminarHola Joan,
Eliminarparece el problema al que te enfrentas es que lo que seleccionas es un hipervínculo, por lo que al seleccionarlo actúa éste y te abre o mueve al destino.
El asunto sería complejo, para la idea básicamente iría por deshabilitar el hipervícnulo al seleccionarlo para luego copiar y pegar las celdas necesarias al destino deseado (con sus carácterísticas)...
sin embargo te puedo comentar de la dificultad (casi imposible) del tema...
Slds
muchas gracias por responder, entonces lo simplificare, he conseguido que al ejecutar la macro se me copie el contenido de las celdas en las celdas deseadas, el problema es que siempre se me copian las celdas de la fila en la cual ha creado la macro. como podria solucionarlo?
ResponderEliminarHola,
Eliminarse trataría que incluyeras como variable la fila...
Supongo estarás trabajando sobre el evento selectionchange en la hoja de código, así pues una forma de copiar y pegar podría ser:
range("A"&target.row).copy destination:= ....
Saludos
Gracias por la ayuda.
ResponderEliminarBuenos días Ismael. Muy buenos tus aportes y tu dedicación.
ResponderEliminarVoy a hacerte una consulta que me tiene molesto hace tiempo:
Tengo un Excel con una función que me extrae la ruta del hipervínculo y la inserta en la celda derecha al hipervínculo. El problema con esta función es que no inserta la ruta completa sino algo asi como "..\..\..\DOCUMENTO.PDF"; lo que necesito es que muestre toda la ruta, lo que sería por ejemplo "C:\MIS DOCUMENTOS\ARCHIVOS\DOCUMENTO.PDF". Soy un usuario algo avanzado en vba, ya he desarrollado varias aplicaciones personales pero no logro dar con esto. he intentado probando cargar la ruta a distintos tipos de variables, cambiar los formatos de celda antes de insertar, etc. Si pudieras ayudarme te lo agradecería muchísimo.
Saludos desde Mendoza, Argentina
Hola Andrés,
Eliminaryo suelo utilizar esta función para recuperar la dirección de las celdas con hipervínculos.
Function ExtraeDireccion(celda As Range)
If (celda.Range("A1").Hyperlinks.Count = 1) Then
ExtraeDireccion = celda.Range("A1").Hyperlinks(1).Address
End If
End Function
Espero te sirva
Saludos
Buenos días Ismael, muchas gracias por tu respuesta.
EliminarTe comento que he la función es igual a otras que uso y que ya había probado. Lo que he observado de este problema es que se produce cuando la ruta de los hipervínculos refieren a ficheros de un servidor, aunque también puede producirse en los discos locales cuando el hipervínculo es relativo. En ese sentido ya he probado cambiando las respectivas configuraciones de Excel e intentando sostener la ruta absoluta pero hasta el ahora nada me ha servido; no se si conoces casos similares?
Hola Andrés...
Eliminarla verdad nunca me topé con algo similar
Lo siento :'(
Saludos
Buenos dias Ismael
ResponderEliminarUna consulta
He buscado como crear un hipervinculo a desde excel a una pagina X de un archivo pdf que se encuentra en mi PC, pero no encuentro nada concreto
Normalmente el hipervicnculo de excel solo me da la opción de abrir el pdf en la pagina 1, pero no se como hacer que me lo abra en una pagina intermedia que yo le indique.
Sabes de alguna macro o algún método que me permita hacerlo?
gracias
O bueno inicialmente el archivo estaría en mi PC, pero la idea es subirlo a un servidor de la empresa, con lo cual creo que la ruta cambiaria a http:// supongo
ResponderEliminarHola,
Eliminaryo usaría le herramienta de hipervínculo.. dará igual donde esté el fichero (local o servidor), el asistente te marcará la ruta que sea.
Saludos
buenos dias Ismael
EliminarLa herramienta hipervinculo como te comentaba no me redirecciona a una pagina dentro del archivo PDF, el solo me abre el archivo y se posiciona en la primera pagina de este
La idea que comento es que se pudiera redireccionar el hipervinculo dentro de un archivo pdf de 450 paginas, por ejemplo a la pagina 150. Poder desde excel consultar información diferente en múltiples paginas del pdf, con hipervinculos que lleven exactamente a la pagina donde se encuentre la información.
He intentado pero no encuentro la forma
intente añadiendo (#page=150) http://xxxxxx/archivo.pdf#page=150, pero no toma la pagina
Ok,
Eliminarno leí bien la primera vez.
Trato de subir una posible solución en próximos días.
Un saludo
Hola Ismael
Eliminarestuve haciendo pruebas con el siguiente archivo, definiendo para este caso la pagina 9 (https://www.u-cursos.cl/usuario/037b375d320373e6531ad8e4ad86968c/mi_blog/r/DiseA_o_de_Concreto_Reforzado_8_edicion_-.pdf#page=9) y funciona, siempre y cuando se abra con un navegador y no con el acrobat reader
Segun lo anterior, como la idea es que funcione en varios equipos de computo, yo deberia en cada uno de ellos predeterminar un programa como internet explorer para que tome la pagina, o, deberia en el codigo del hipervinculo, definirle el programa con el cual quiero que lo abra, para que sin importar en que equipo abra el archivo y que software tenga predeterminado, lo haga con el que le haya definido en el hipervinculo.
A eso se reduciría mi problema de abrir un archivo pdf en una pagina intermedia diferente a la primera.
Espero esto sirva de guia para la solución
Gracias
Correcto, esa es la explicación que subiré...
EliminarSe requiere de un navegador (IE, por ejemplo) para poder abrir el pdf en una página específica..
Slds
Entendido, Estaré pendiente de tu explicación
EliminarBuenos dias Ismael
EliminarCordial saludo.
Sabes si hay alguna forma de llevar a cabo estos hipervinculos?
Ya publiqué al respecto
Eliminarhttp://excelforo.blogspot.com.es/2017/09/VBA-Abrir-Pdf-en-Pagina-Especifica.html
slds
Gracias Ismael
ResponderEliminarRevisare el link
Este comentario ha sido eliminado por el autor.
ResponderEliminarEste comentario ha sido eliminado por el autor.
EliminarBuen día Ismael. Tengo en Excel una hoja de especificaciones de diferentes estilos de bolsos para dama donde todas los datos cambian en relación a una celda donde se teclea o elige el estilo. Para algunos estilos tengo vídeo de procedimiento de armado y... no se se pueda... quisiera, al mismo tiempo de generar el hipervinculo, validar si existe el video en una carpeta especifica y de ser verdadero me muestre una imagen con el hipervinculo asignado y en caso de ser falso me muestre la misma imagen difuminada/deshabilitada sin el hipervinculo
ResponderEliminarHola Santos,
Eliminarpara comprobar si un fichero existe yo suelo emplear esta función UDF:
Function Existencia(carpeta As String,fichero As String) As Boolean
Dim obj_fso As Object
Set obj_fso = CreateObject("Scripting.FileSystemObject")
Existencia = obj_fso.fileExists(carpeta & "\" & fichero)
End Function
Saludos
Hola Ismael, tu codigo funciona bien. tengo una consulta: en la columna P Tengo un listado de direcciones web, quisiera hacer hipervinculos a cada una de esas direcciones web desde otra columna de la misma hoja y que el hipervinculo tenga un nombre corto por ejemplo "foto1". me puede colaborar con el codigo. Gracias!
ResponderEliminarHola Luis,
Eliminarno hace falta código...
Basta con emplear la función HIPERVINCULO
Echa un vistazo en este otro ejemplo:
ver
Saludos
Ismael, resulta que las direcciones web tiene mas de 255 caracteres y con la función HIPERVINCULO no la soporta, por eso quisiera utilizar codigo VB. Podrias colaborarme con el codigo para hacer hipervinculos en la misma hoja de excel, y nombrar el hipervinculo con un nombre corto. De antemano gracias.
ResponderEliminarHola Luis,
Eliminarte serviría la idea plasmada en el post
Usa:
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:=direccion, TextToDisplay:=fichero
En lugar de Selection al definir el Anchor:=, emplea las celdas que correspondan...
En TextToDisplay:= indica el nombre corto 'foto1' o el que quieras...
Un saludo
Hola Ismael
ResponderEliminarAndo buscando realizar algo similar en el tema de hipervinculos, el tema es que necesito que en la Columna: A:A la palabra alfanumérica que escriba cree un hipervinculo directo a otra hoja que tiene el mismo código. Te explico, es que este código alfanumérico tiene varias columnas de descripción y precio, la idea es que al indicar el código en la columna A:A permita ir directo al código para poder cambiar el precio del producto sin tener que buscarlo en toda la lista de la segunda hoja.
Hola Jesús,
Eliminarentiendo que la idea es que al hacer clic en la celda te lleve a la segunda hoja, y la fila donde se encuentre ese código ??
Me lo apunto y subo una explicación al blog.
Saludos
Buenos días Ismael
ResponderEliminarCorrecto esa es la idea que al dar clic en el código de la hoja 1 se llegue al código de la hoja 2 para poder realizar cambios en el precio del articulo. Te agradezco si me puedes ayudar ya que llevo días tratando de poder obtener este código, pero no lo he logrado, el que publicaste lo he modificado pero lo único que he conseguido es que me lleve a una casilla única no a los diferentes códigos
Saludos
Buenos Días
ResponderEliminarrecupere los hipervínculos de un archivo de excel con una macro, pero ahora me falta validar cuales hipervínculos estan rotos y es muy tardado revisar uno por uno,
Hola,
Eliminarhay una función programada clásica para ver si un fichero existe en una ruta... creo es lo que buscas:
Function FileExists(FilePath As String) As Boolean
Dim TestStr As String
TestStr = ""
On Error Resume Next
TestStr = Dir(FilePath)
On Error GoTo 0
If TestStr = "" Then
FileExists = False
Else
FileExists = True
End If
End Function
Saludos
Este comentario ha sido eliminado por el autor.
ResponderEliminarHola Ismael
ResponderEliminar¿Cómo podría hacer para que el código genere hipervínculos en cada hoja del libro y no solo en la hoja1 o en la hoja que pones el código.
Saludos
Hola,
Eliminarpodrías añadir un loop que recorra todas las hojas
ruta = "E:\excelforo\"
FOR EACH sh IN Worksheets
FOR EACH celda IN sh.Range("A1:B100")
fichero = celda.Value
direccion = ruta & fichero
'depuramos posibles errores, en caso que la celda está vacía salimos de la rutina
If Celda.Value = "" Then
Next For
Else
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:=direccion, TextToDisplay:=fichero
End If
Next celda
NEXT sh
Algo así en un procedimiento Sub 'normal' podría funcionar...
Pero ojo que recorrer todas las celdas de un rango para todas las hojas puede demorarse bastante..
Saludos
Hola buenas tardes, quiero consultarle que debo añadir a ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:=direccion, TextToDisplay:=fichero para poder insertar en otro hoja y no en la hoja activa, por su respuesta gracias.
ResponderEliminarHola,
Eliminarpodría ser:
Sheets("Hoja2").Hyperlinks.Add Anchor:=Hoja2.Range(Selection.Address), Address:=direccion, TextToDisplay:=fichero
saludos
BUEN DIA MI PROBLEMA ES EL TextToDisplay QUIERO QUE ME TOME EL NOMBRE DE UNA CELDA DE OTRA HOJA
ResponderEliminar