Hipervínculos en Word
Impreso de: Foro de Access y VBA
Categoría: Otros de Microsoft: Windows y Office
Nombre del foro: Word
Descripción del foro: Foro de Word
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=86962
Fecha de impresión: 26/Marzo/2026 a las 17:28
Tema: Hipervínculos en Word
Publicado por: Jehosuah
Asunto: Hipervínculos en Word
Fecha de publicación: 30/Junio/2024 a las 11:51
|
Hola amigos Estoy creando un documento en Word, para después pasarlo a pdf. Este documento tiene muchas miniaturas de imágenes en las que pongo hipervínculos para visualizar las imágenes en grande. Funciona muy bien, pero tengo un problema serio: Cada vínculo queda establecido para la ruta absoluta de la imagen, pero necesito que sea una ruta relativa, para poder compartir este documento y que otras personas puedan abrir las imágenes independientemente de la carpeta o unidad en la que está el libro. El libro lo tengo en una carpeta en la que hay carpetas con diferentes tipos de imágenes, y los vínculos deberían buscar dentro de esta carpeta sin tener en cuenta en qué unidad o carpeta está instalada la carpeta general de este documento. Muchas gracias por vuestra atención y ayuda.
|
Respuestas:
Publicado por: xavi
Fecha de publicación: 01/Julio/2024 a las 10:40
|
Hola,
Creo que deberías modificar la ruta del vínculo para sustituir la parte "variable" por un .
Si ejecutamos desde C:\Users\Public\Documents y tenemos los ficheros en la subcarpeta "imagenes", deberías cambiar el hipervínculo de
C:\Users\Public\Documents\imagenes
a
.\imagenes
Lo malo es que no sabria como hacerlo para un monton de hipervinculos. A ver si alguien nos aporta algo de luz.
Un saludo
------------- Xavi, un minyó de Terrassa
http://www.llodax.com" rel="nofollow - Mi web
|
Publicado por: prga
Fecha de publicación: 01/Julio/2024 a las 15:36
|
Hola. Siguiendo la idea de Xavi y 'supongamos que las fotos están, por ejemplo, en C:\Users\usuario\Desktop\provesWord2\imagenes\imagen1.jpg y tenemos que dejar algo como imagenes\imagen1.jpg para hacer referencia a una carpeta llamada imagenes que está dentro de la carpeta del word y a continuación el nombre de la imagen.
El siguiente código recorre todos los "hyperlinks" del documento y cambia/recorta sus "direcciones"
Public Sub cambiavinculos() Dim mivinculo As Hyperlink Dim micarpeta As String micarpeta = LCase("C:\Users\usuario\Desktop\provesWord2\") For Each mivinculo In ActiveDocument.Hyperlinks If InStr(LCase(mivinculo.Address), micarpeta) <> 0 Then ''''MsgBox (mivinculo.Address) mivinculo.Address = Replace(LCase(mivinculo.Address), micarpeta, "") Else MsgBox ("no esta") End If Next Espero que al menos sirva como idea para poder solucionar el problema. Ya comentas si sirve para algo. Un saludo a todos
|
Publicado por: Jehosuah
Fecha de publicación: 01/Julio/2024 a las 21:29
|
Hola amigos. En primer lugar, muchas gracias por vuestra ayuda. En cuanto a lo que dices, Xavi, funciona bien lo del punto. Genial. La aportación de Prga, podría ser fantástica, pero me encuentro con serios problemas para llevarla a cabo: En primer lugar, nunca he utilizado código en Word, al contrario que en Access, pero veo que no tiene nada que ver uno con otro. He visto un video en youtube que dice que hay que insertar un objeto como otro documento de word y ponerlo como icono, incluyendo en ese documento el código. Lo he hecho pegando tu código, pero luego no sé cómo ejecutar ese objeto para que el código haga su trabajo. Por otro lado, aquí pongo el código tal como lo he modificado, para saber si está bien. Public Sub
cambiavinculos()
Dim mivinculo
As Hyperlink
Dim micarpeta
As String
micarpeta =
LCase("E:\ASTROLOGÍA\Astrología Psicológica")
For Each
mivinculo In ActiveDocument.Hyperlinks
If
InStr(LCase(mivinculo.Address), micarpeta) <> 0 Then
''''MsgBox (mivinculo.Address)
mivinculo.Address = Replace(LCase(mivinculo.Address), micarpeta, ".")
Else
MsgBox
("no esta")
End If
Next He puesto la carpeta donde está el documento y las carpetas con archivos, y en el replace, en lugar de dejarlo en blanco "" he puesto el punto que dice Xavi "." Espero haberlo hecho bien. Pues eso, que no sé cómo ejecutar esto. Muchas gracias por vuestra paciencia.
|
Publicado por: prga
Fecha de publicación: 02/Julio/2024 a las 10:17
|
Hola. Aclaro que este sería un código de usar y tirar, vamos lo que hace es cambiar los vínculos de los "mil" casos que pueda haber con una dirección absoluta. Se supone que los nuevos vínculos que se creen ya estarán con la dirección relativa, vamos con el ".". Hecha esta salvedad, en el word en cuestión pulsando Alt+F11 se abre el editor del VBA del word ( y salvo error los de todos los del office) y aparecerá a la "izquierda" algo como thisdocument, se abre y se pega el código que has puesto. Se ejecuta el código y en un momento, salvo error, ya se habrán "actualizado" todos los hipervínculos que haya en el documento. Se guarda el documento con la opción de sin macros ya que en un principio ya no se va a volver a utilizar este código. Todo el proceso está escrito de memoria, vamos no está comprobado Espero que la larga explicación sirva para resolver la duda. ya comentas. Un saludo a todos
|
Publicado por: Jehosuah
Fecha de publicación: 02/Julio/2024 a las 18:56
|
¡Socorro! He abierto el editor de VBA, en la barra de herramientas, a la izquierda he abierto un desplegable y he seleccionado Modulo. No he visto otra forma. He pegado el código, le he añadido End Sub al final, que faltaba, y lo he ejecutado. Salía continuamente el mensaje de No esta, que aparece en el código, y no acababa nunca, así que he cancelado, y he vuelto a empezar, quitando ese mensaje del código y poniendo otro fuera y antes del end sub para indicar que ya ha acabado. Lo he ejecutado y enseguida ha aparecido el mensaje de ya ha acabado. La sorpresa es que ahora en todos los hipervínculos que dirigían a un marcador en el documento aparecen las palabras Hipertext con el nombre del marcador entre llaves, sustituyendo al texto que contenía el marcador, y en algunas miniaturas se ha añadido también esas palabras. Hay otras miniaturas que están bien, así que no sé si eso lo ha hecho con todo lo que no estaba con el vínculo absoluto que buscaba. Y lo malo es que ahora, cualquier copia que abro visualiza todo eso igual, aunque no le haya pasado el código. Por favor, un cable.
|
Publicado por: prga
Fecha de publicación: 04/Julio/2024 a las 10:24
Hola. Ya comenté que el código tal como está es de "usar y tirar", vamos, en teoría cambia los vínculos absolutos(de la cadena buscada) por un vínculo relativo, apto para cualquier carpeta donde se "instale" el programa y todas las copias que se hagan se supone que tendrán el vinculo relativo. Si se tienen otros vínculos absolutos (por eso aparecía 'no esta'), se tendrá que repetir el proceso cambiando la "ruta" absoluta por el ".". Como comentaste, o eso me pareció entender, que el word se convierte en PDF para trabajar con ese PDF, cualquier solución en word que lleve código, dicho código en un principio no se pasará al PDF. De ahí la solución de "usar y tirar"Todo lo anterio,r evidentemente no soluciona el problema, pero al menos a mí, sin tener el problema real para hacer pruebas, no se me ocurre nada para solucionar la cuestión Esperemos mejores opiniones Un saludo a todos
|
Publicado por: Jehosuah
Fecha de publicación: 04/Julio/2024 a las 19:56
Gracias, Prg, iré haciendo pruebas. Y gracias también a Xavi. Un abrazo.
|
Publicado por: Jehosuah
Fecha de publicación: 04/Julio/2024 a las 20:30
Bueno, el susto de que me quitara texto y me lo cambiara por hiperlink... ya lo tengo claro: Alt-F9 alterna entre ver el texto o el código, así que parece que al pasar el código que me pasaste, se queda en vista de código, como si hubiera pulsado Alt-F9 así que con volver a pulsar esas teclas ya se ve todo normal. Ahora seguiré probando a ver si tengo que volver a pasar el código con otras rutas absolutas. Muchas gracias otra vez y un saludo
|
Publicado por: Jehosuah
Fecha de publicación: 05/Julio/2024 a las 20:12
Ya está, todo cambiado. Ha ido de maravilla y me has ahorrado mucho trabajo. Muchas gracias, y también a Xavi. Podéis cerrar el hilo.
|
|