Problema: Deseamos comprobar que todos los links a páginas web que tenemos en una presentación Powerpoint estén vivos, que no estén rotos, que apunten correctamente a páginas web activas.
Comentario: En Powerpoint actualmente no existe un mecanismo para verificar que todos los link (enlaces) de una transparencia funcionen correctamente. Para ello, tendremos que crear una macro con visual basic y ejecutarla. Además, en la programación de esta macro, no existe un mecanismo que nos devuelva todos los links de toda la presentación, tenemos que ir recorriendo transparencia a transparencia.
Solución: A continuación comparto el código que utilizo yo.
- La manera de utilizarlo es ir a la pestaña "vista" --> Crear, le damos el nombre "REVISAR_HIPERVINCULOS" (atención a las mayúsculas) y copiamos este código.
- Para ejecutarlo, puedes pulsar en el triángulo verde que tendrás en la parte superior del editor de macros.
- Cuando lo ejecutes, se creará un fichero de texto que se llamará "BrokenLinks.txt" en tu carpeta de usuario de Windows, que se llamará algo como "C:/Users/TU_NOMBRE" (por ejemplo, si tu usuario de Windows se llama Juan --> C:/Users/Juan o C:/Usuarios/Juan). Indicará en qué página está el enlace y de qué enlace se trata
- Si hay enlaces rotos en la parte de notas de las diapositivas, también los identificará
- También puedes guardar la presentación como "presentación con macros" y entonces lo tendrás siempre disponible en las macros de powerpoint.
- Si no quieres guardarlo dentro de la presentación, guarda como presentación normal y te saldrá un mensaje de si deseas no guardar las macros, aceptas y el código no se guardará dentro de la presentación.
- Para los lectores interesados explico lo que hace el código después del mismo, si eso no te interesa, simplemente copia todo el código y ejecútalo pulsando sobre el triángulo verde que tendrás en la parte superior del editor de macros (visual basic for applications, VBA):
Function CheckURL(strURL As String) As Boolean
Dim objDemand As Object
Dim varResult As Variant
On Error GoTo ErrorHandler
Set objDemand = CreateObject("WinHttp.WinHttpRequest.5.1")
With objDemand
.Open "GET", strURL, False
.Send
varResult = .StatusText
End With
Set objDemand = Nothing
If varResult = "OK" Then
CheckURL = True
Else
CheckURL = False
End If
ErrorHandler:
End Function
Sub REVISAR_HIPERVINCULOS()
Dim objDoc As Presentation
Dim objLink As Hyperlink
Dim strLinkAddress As String
Dim sld As Slide
Dim fso As Object
Dim txtFile As Object
Set objDoc = ActivePresentation
Set fso = CreateObject("Scripting.FileSystemObject")
Set txtFile = fso.CreateTextFile(Environ("USERPROFILE") & "\BrokenLinks.txt", True)
txtFile.WriteLine "BROKEN LINKS" & vbCrLf
For Each sld In ActivePresentation.Slides
For Each objLink In sld.Hyperlinks
strLinkAddress = objLink.Address
If Not CheckURL(strLinkAddress) Then
txtFile.WriteLine "Link KO. Slide: " & sld.SlideIndex & " Link: " & strLinkAddress & vbCrLf
End If
DoEvents
Next objLink
Next sld
txtFile.Close
Set txtFile = Nothing
Set fso = Nothing
End Sub
Aquí está el análisis del código, seguro que se puede mejorar y optimizar, pero os funcionará bien:
Function CheckURL(strURL As String) As Boolean:
- Objetivo: Verificar si una URL dada es accesible o no.
- Cómo funciona:
- Se crea un objeto de solicitud HTTP (WinHttp.WinHttpRequest.5.1).
- Intenta acceder a la URL (strURL) usando el método "GET".
- Si la solicitud es exitosa, la función devuelve True si el estado es "OK". De lo contrario, devuelve False.
- Errores: Si ocurre algún error durante la solicitud HTTP, la función devolverá False por defecto (porque las variables Boolean no inicializadas en VBA tienen un valor predeterminado de False).
Sub REVISAR_HIPERVINCULOS():
- Objetivo: Revisar todos los hipervínculos en la presentación PowerPoint activa y registrar los que estén rotos en un archivo de texto.
- Cómo funciona:
- Primero, inicializa un objeto ActivePresentation, un FileSystemObject y un archivo de texto (BrokenLinks.txt) ubicado en el directorio del perfil del usuario.
- La subrutina escribe "BROKEN LINKS" como encabezado en el archivo de texto.
- Luego recorre cada diapositiva en la presentación activa.
- Para cada diapositiva, verifica cada hipervínculo en la diapositiva usando la función CheckURL.
- Si un hipervínculo no es válido (es decir, la función CheckURL devuelve False), se escribe información sobre ese hipervínculo roto en el archivo de texto, indicando el número de diapositiva y la dirección del hipervínculo.
- Después de revisar todos los hipervínculos, cierra el archivo de texto y libera los objetos utilizados.
No hay comentarios:
Publicar un comentario