Word به شما امکان می دهد در یک سند پیوندهایی را به یک سند خارجی یا به مکان های دیگر در سند فعلی ایجاد کنید. پیتر به دنبال راهی برای شمارش تنها پیوندهای داخلی در یک سند است و به این فکر می کند که آیا راهی برای انجام این کار وجود دارد یا خیر.
تنها راهی که می توانید این کار را انجام دهید این است که از یک ماکرو برای عبور از هر لینک در سند خود استفاده کنید. خوشبختانه این کار با بررسی عناصر مجموعه Hyperlinks به راحتی انجام می شود. هر شی Hyperlink دارای ویژگی های مختلفی است که بسته به ویژگی های پیوند می تواند تنظیم شود. ویژگی های Address و SubAddress اهمیت ویژه ای دارند.
ویژگی Address (همانطور که از نام آن پیداست) آدرس هدف پیوند است. معمولاً این چیزی شبیه یک URL است (مانند http://www.PCcloob.ir)، اما همچنین می تواند نام یک فایل در درایو قابل دسترسی از سیستم شما یا یک آدرس ایمیل (مانند mailto:allen) باشد. @sharonparq.com). از آنجایی که ویژگی Address میتواند چندین هدف داشته باشد، نمیتوانید به طور خاص وجود کاراکترهایی مانند پیشوند «http» را بررسی کنید. اگر پیشوند گم شده باشد، پیوند همچنان می تواند خارج از سند فعلی باشد زیرا ممکن است به فایل دیگری در سیستم شما ارجاع دهد.
با این حال، یک نمونه وجود دارد که فیلد Address خالی است - اگر پیوند به یک نشانک در سند فعلی باشد. اگر خالی باشد، ویژگی SubAddress به نام نشانک مورد اشاره در پیوند تنظیم می شود. البته، اگر پیوند به یک نشانک خاص در سند دیگری باشد، هر دو ویژگی Address و SubAddress تنظیم خواهند شد.
برای دریافت ایده ای از اطلاعات ذخیره شده با هر شی Hyperlink، به ماکرو کوتاه زیر نگاهی بیندازید. از هر پیوند عبور می کند و اطلاعات مربوط به هر یک را نشان می دهد.
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
بنابراین، سادهترین روش برای تعیین تعداد پیوندهای داخلی در یک سند (به عبارت دیگر، پیوندها به نشانکهای موجود در سند فعلی)، بررسی ویژگی Address هر شی Hyperlink است. اگر ملک خالی است، می توانید با خیال راحت فرض کنید که لینک داخلی است.
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
اگر میخواهید فهرستی از اهداف واقعی پیوندهای داخلی را جمعآوری کنید، میتوانید به راحتی به ماکرو اضافه کنید تا در حلقه For Every، به هر ویژگی SubAddress نگاه کنید و آن را به هر چیزی که در پایان نشان دادهاید اضافه کنید. ماکرو
البته، هایپرلینکها فقط به ظاهر شدن در متن سند محدود نمیشوند. همچنین میتوانید در سایر عناصر سند، مانند سرصفحه، پاورقی، یادداشتهای پایانی، و جعبههای متنی، هایپرلینک داشته باشید. تغییر ماکرو زیر همه پیوندها را میشمارد. آن را در هر یک از این مناطق (StoryRanges) در سند پیدا می کند.
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