![]() |
|
#1
|
|||
|
|||
|
Hello all,
I would like to programmatically loop through the endnotes that are part of the selected text in a Word document. I can do that, but the code gives me ALL endnotes in the document. It seems to ignore the fact that I only want the endnotes from what text is selected (text contains the superscript index numbers). Can anyone help please ? Thanks a lot ! In the screenshot, I selected 2 lines of text, still I get all my 327 endnotes of the active document. I would expect only a couple of endnotes in the Immediate window. HTML Code:
Sub forum()
Dim e As Endnote
For Each e In Selection.Range.Endnotes
Debug.Print e.Index
Next
End Sub
|
|
#2
|
||||
|
||||
|
Try:
Code:
Sub Demo()
Application.ScreenUpdating = False
Dim Rng As Range
With Selection
Set Rng = .Range
With .Find
.ClearFormatting
.Replacement.ClearFormatting
.Format = False
.Forward = True
.Wrap = wdFindStop
.MatchWildcards = False
.Text = "^e"
End With
Do While .Find.Execute = True
If .InRange(Rng) = False Then Exit Do
MsgBox .Endnotes(1).Index
.Collapse wdCollapseEnd
Loop
Rng.Select
End With
Application.ScreenUpdating = True
End Sub
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
|
#3
|
|||
|
|||
|
I just created this as I see that Macropod already answered you. So here's my attempt in case it helps.
This method checks that each marker text is within your selection range, and if so, prints the endnote number. Code:
Sub selectedEndnotes()
' Loop through selected endnotes.
Dim eNotes As Endnotes
Dim eNote As Endnote
Dim rng_selected As Range
Dim rng_marker As Range
Set eNotes = ActiveDocument.Endnotes
Set rng_selected = Selection.Range
' If nothing is selected, show a message
If rng_selected.Start = rng_selected.End Then
MsgBox "Please make a selection."
End If
Debug.Print ("The following endnotes are in selection:")
For Each eNote In eNotes
Set rng_marker = eNote.Reference.Characters.First ' Get marker range
' Only process endnotes whose marker .Start is between selection range.
If rng_marker.Start >= rng_selected.Start And rng_marker.End <= rng_selected.End Then
' ---- Do whatever you're going to do to each endnote here. ---
Debug.Print (eNote.Index)
End If
Next eNote
End Sub
|
|
#4
|
|||
|
|||
|
Quote:
Many thanks, this works perfectly ! Wim |
|
#5
|
|||
|
|||
|
Quote:
|
|
#6
|
|||
|
|||
|
The one thing that the first code does, and the second doesn't (but it was not asked for but in testing I see it now):
the first code also gives the same result if the user makes selections in the endnotes texts. So if you select the superscript numbers in the endnotes themselves, the first code gives the numbers. The second code gives all endnotes numbers. But this is a side effect, not sure if the user will ever do that. Have a nice day ! Wim |
|
#7
|
|||
|
|||
|
Here is my final code.
The user selects text in the Word document. ALL hyperlinks within the text of ALL endnotes that are encountered, are opened through a Chrome browser. Thanks for the support. Code:
Sub Demo()
'https://www.msofficeforums.com/word-vba/50191-get-only-endnotes-selected-text.html
Dim Rng As Range
Dim hl As Hyperlink
Const chromeFileLocation As String = "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"
Application.ScreenUpdating = False
With Selection
Set Rng = .Range
' If nothing is selected, show a message
If .Start = .End Then
MsgBox "Please make a selection containing 1 or more endnotes."
Application.ScreenUpdating = True
Exit Sub
End If
With .Find
.ClearFormatting
.Replacement.ClearFormatting
.Format = False
.Forward = True
.Wrap = wdFindStop
.MatchWildcards = False
.Text = "^e"
End With
Do While .Find.Execute
If Not .InRange(Rng) Then Exit Do
For Each hl In .Endnotes(1).Range.Hyperlinks
'Debug.Print e.Index & ": " & hl.Address
Shell (Chr(34) & chromeFileLocation & Chr(34) & "-url " & hl.Address)
Next
.Collapse wdCollapseEnd
Loop
Rng.Select
End With
Application.ScreenUpdating = True
End Sub
|
|
| Tags |
| endnote reference |
| Thread Tools | |
| Display Modes | |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
Footnote formatting>"Apply changes to selected text" not limiting changes to selected text
|
Swarup | Word | 11 | 07-26-2022 01:51 PM |
Find and Replace Selected Text or Macro for finding selected text
|
mrplastic | Word VBA | 4 | 12-20-2019 01:25 PM |
| Powerpoint-2019 Text in selected theme remains in All Caps even when small caps option is selected | Tanasha4 | PowerPoint | 2 | 04-06-2019 07:53 PM |
How to convert endnotes in a text doc to Word endnotes?
|
Dickison | Word VBA | 4 | 10-06-2012 09:11 PM |
Separating endnotes from text
|
kenglade | Word | 22 | 09-14-2012 04:10 PM |