Word le permite establecer vínculos en un documento a un documento externo oa otros lugares dentro del documento actual. Peter está buscando una forma de contar solo los enlaces internos dentro de un documento y se pregunta si hay una forma de hacerlo.

La única forma en que puede hacer esto es utilizando una macro para recorrer cada hipervínculo en su documento. Afortunadamente, esto se hace fácilmente examinando los elementos de la colección Hipervínculos. Cada objeto de hipervínculo tiene una variedad de propiedades que se pueden configurar, según las características del vínculo. De particular importancia son las propiedades Dirección y Subdirección.

La propiedad Dirección (como sugiere su nombre) es la dirección de destino del enlace. Normalmente, esto es algo así como una URL (como en /), pero también podría ser el nombre de un archivo en una unidad accesible desde su sistema o una dirección de correo electrónico (como en mailto: [email protected]). Debido a que la propiedad Dirección puede tener varios propósitos, no puede verificar específicamente la existencia de caracteres reveladores, como el prefijo «http». Si falta el prefijo, el vínculo puede ser externo al documento actual porque puede hacer referencia a un archivo diferente en su sistema.

Sin embargo, hay una instancia en la que el campo Dirección estará en blanco, si el vínculo es a un marcador dentro del documento actual. Si está en blanco, la propiedad SubAddress se establecerá en el nombre del marcador al que se hace referencia en el enlace. Por supuesto, si el enlace es a un marcador específico en un documento diferente, se establecerán las propiedades Dirección y Subdirección.

Para tener una idea de la información almacenada con cada objeto de hipervínculo, eche un vistazo a la siguiente macro breve. Recorre cada enlace y muestra información sobre cada uno.

Sub LinkInfo()

Dim h As Hyperlink     Dim sTemp As String

For Each h In ActiveDocument.Hyperlinks         sTemp = h.TextToDisplay & vbCrLf         sTemp = sTemp & h.Address & vbCrLf         sTemp = sTemp & h.SubAddress         MsgBox sTemp     Next h End Sub

Por tanto, el método más sencillo para determinar el número de enlaces internos dentro de un documento (en otras palabras, enlaces a marcadores dentro del documento actual) es examinar la propiedad Dirección de cada objeto de hipervínculo.

Si la propiedad está vacía, entonces puede asumir con seguridad que el enlace es interno.

Sub InternalLinks1()

Dim h As Hyperlink     Dim lInternal As Long

lInternal = 0     If ActiveDocument.Hyperlinks.Count > 0 Then         For Each h In ActiveDocument.Hyperlinks             If h.Address = "" Then lInternal = lInternal + 1         Next hp     End If     MsgBox lInternal & " hyperlinks are internal" _       & " out of a total of " & ActiveDocument.Hyperlinks.Count End Sub

Si quisiera armar una lista de los objetivos reales para los enlaces internos, sería una adición fácil a la macro buscar, dentro del ciclo For Each, en cada propiedad SubAddress y agregarla a lo que haya mostrado al final de la macro.

Por supuesto, los hipervínculos no se limitan a aparecer únicamente dentro del cuerpo del documento. También puede tener hipervínculos en otros elementos del documento, como encabezados, pies de página, notas al final y cuadros de texto. La siguiente variación de la macro cuenta todos los enlaces que encuentra en cualquiera de estas áreas (StoryRanges) en el documento.

Sub InternalLinks2()

Dim h As Hyperlink     Dim lInternal As Long     Dim lTotal As Long     Dim aStory As Range

lTotal = 0     lInternal = 0     For Each aStory In ActiveDocument.StoryRanges         lTotal = lTotal + aStory.Hyperlinks.Count         If aStory.Hyperlinks.Count > 0 Then             For Each h In aStory.Hyperlinks                 If h.Address = "" Then lInternal = lInternal + 1             Next h         End If     Next aStory     MsgBox lInternal & " hyperlinks are internal" _       & " out of a total of " & lTotal End Sub

_Nota: _

Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios WordTips), he preparado una página especial que incluye información útil.

link: / wordribbon-WordTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador].

WordTips es su fuente de formación rentable en Microsoft Word.

(Microsoft Word es el software de procesamiento de texto más popular del mundo). Este consejo (12814) se aplica a Microsoft Word 2007, 2010 y 2013.