martes, 19 de mayo de 2015

Extraer hipervinculos con Excel

Hay veces que necesitamos extraer de un excel con una cantidad ingente de hipervinculos, el hipervínculo limpio. Quiero decir, que tienes por ejemplo esto: "hola", un hola en excel, pero que si pinchas en el, vemos que nos lleva a www.google.es. Y asi con un listado de excel de unos miles de enlaces.

Con unos pocos pasos, vamos a generar una macro en excel que nos permita la extraccion de todos los vínculos en una celda contigua, sin dificultad alguna.

  1. Pulsamos Alt + F11 en la hoja de excel sobre la que queremos trabajar. Esto lanza el editor de VBA.
  2. En el menú de la aplicacion que se ha abierto, vamos a Insertar -> modulo. 
  3. En el cuadro en blanco que aparece, pegamos la siguiente funcion, que es lo que generará la extraccion del hipervínculo:
Function Extraer_Hipervinculo(Rango As Range)
Dim Hipervinculo As String
Hipervinculo = Rango.Hyperlinks(1).Address
Extraer_Hipervinculo = Hipervinculo
End Function
Despues, solo tenemos que aplicar la funciona nueva. Se hace de la siguiente manera:


En la celda contigua al priner enlace, escribimos "=extraer_hipervinculo", sin las comillas. Como ves en la imagen, practicamente aparece la opcion, segun lo escribes. Pinchas sobre la funcion que aparece, y seguidamente, pinchas sobre la casilla izquierda, la casilla que contiene la palabra con el hipervínculo. Verás que ha agregado al texto de la casill sobre la que hemos escrito la funcion (el =extraer_hipervinculo un "(A1". Sin tocar nada mas, pulsamos Intro.


Aparece algo asi, como lo del cuadro superior. Si queremos aplicarlo a más celdas, es muy facil. Pinchamos sobre la celda sobre la que se ha aplicado la funcion, en el caso de la foto superior, la celda B1. Veras que en la esquina inferior derecha de la celda hay como un cuadradito. Pincha sobre el, y tira hasta la celda en la que quieras aplicar la formula.


Claro, las celdas que no contengan nada obviamente no muestran valores, pero sobre todas las demás, se aplica la macro creada al comienzo. ¡Y ya esta!No tiene mayor dificultad. ¡Espero que te sea útil!

27 comentarios:

  1. ¿como hacer para que me imprima un enlace que ponga en la celda a1? la idea es que no tenga que escribir en el macro directamente el enlace solo la celda en la que esta. Lo que hago me falla. Gracias.

    Sub Abre_word_imprime_cierra()
    With CreateObject("word.application")
    .Visible = False
    With .Documents.Open(Range("A1"), , , , "password")
    .PrintOut
    .Close False
    End With
    .Quit
    End With
    End Sub

    ResponderEliminar
  2. genial!! buena ahorrada de tiempo, gracias miles

    ResponderEliminar
  3. Justo lo que buscava! Muchas gracias

    ResponderEliminar
  4. el codigo para sacar la url me funciono muchas gracias desde Tangua Nariño

    ResponderEliminar
  5. Muy buena inducción, los felicito.
    muchas gracias

    ResponderEliminar
  6. Excelente aporte. Me sirvió de inmediato

    ResponderEliminar
  7. Hola, mis hipervinculos hacen referencia a correos electronicos y la funcion dada no funciona (me aparece #¡VALOR! como resultado). Se podria modificar el codigo para solucionarlo?
    Muchas gracias.

    ResponderEliminar
  8. EXCELENTE APORTE... MUY UTIL, GRACIAS

    ResponderEliminar
  9. Muchas gracias, me sacaste de un apuro grande. Muy buena instrucción

    ResponderEliminar
  10. ¿Y si los hipervinculos on fotos? Hacen referencia a una URL con la foto, quiesiera ver cada foto en el mismo excel, ¿se puede hacer?
    Si alguien tiene la solución lo agradeceria infinitamente.

    Muchisimas gracias

    ResponderEliminar
  11. Excelente, si hubiera otra nos compartes

    ResponderEliminar
  12. Muchas gracias!! me ahorraste varios minutos de trabajo pesado

    ResponderEliminar
  13. Un crack! Me ahorraste horas de copy paste. Millones de gracias. Anda perfecto.

    ResponderEliminar
  14. Me salvaste!! enormemente!!!! GRACIAS! infinitamente!

    ResponderEliminar
  15. Hola buenas. Primero que nada excelente aporte lo otro como puedo hacer que en el hipervinculo venga incluido un marcador asociado que te lleva a una parte especifica del archivo en este caso un word ?
    Ejemplo: Plan_de_Prueba_validadore_MVALPO_AT.docx#PP_15_005
    al usar tu funcion solo me trae "Plan_de_Prueba_validadore_MVALPO_AT.docx"

    ResponderEliminar

¡Gracias por colaborar en este blog con tus comentarios! :)