![]() |
|
#1
|
|||
|
|||
|
Hi, everybody! Can someone help? I'm trying to find and select the whole string of a passive URL. Here below my tentative code, which stops too soon. Code:
Sub SelectNextURL()
Dim rng As Range
Dim startPos As Long
Dim endPos As Long
Dim doc As Document
Dim urlPattern As String
Dim found As Boolean
Set doc = ActiveDocument
'URLs starting with http or https
urlPattern = "(https?://[^\s<>""']+)"
' Use the Find object
Set rng = doc.Content
With rng.Find
.ClearFormatting
.Text = ""
.MatchWildcards = True
' Word wildcards: http[s]:// followed by any non-space characters
.Text = "(http*)(://*)([! ^13^32^9^t<>'""]@)"
found = .Execute
End With
If found Then
rng.Select
MsgBox "URL found and selected: " & rng.Text, vbInformation
Else
MsgBox "No URL found.", vbExclamation
End If
End Sub
Last edited by macropod; 11-12-2025 at 12:51 PM. Reason: Added code tags for code formatting |
|
#2
|
||||
|
||||
|
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
|
#3
|
|||
|
|||
|
Thanks a lot, macropod! But the code here below cannot find anything. My fault?
Code:
Sub MakeLinksMP()
Application.ScreenUpdating = False
With ActiveDocument
With .Range
With .Find
.Text = "https://[! ]{1,}"
.Execute
End With
If Not .Find.found Then MsgBox "Not found"
Do While .Find.found
.Duplicate.AutoFormat
.Collapse wdCollapseEnd
.Find.Execute
Loop
End With
End With
Application.ScreenUpdating = True
End Sub
Last edited by macropod; Yesterday at 05:24 PM. Reason: Added code tags - again |
|
#4
|
|||
|
|||
|
You need .MatchWildCards = true
Code:
Sub MakeLinks()
'Adapted from code posted by Paul Edstein
Application.ScreenUpdating = False
With ActiveDocument
With .Range
With .Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = "<[0-9A-ÿ.\-]{1,}\@[0-9A-ÿ\-.]{1,}"
.Forward = True
.Wrap = wdFindStop
.Format = False
.MatchWildcards = True
End With
Do While .Find.Execute
.Duplicate.AutoFormat
.Collapse wdCollapseEnd
Loop
End With
With .Range
With .Find
.Text = "http://[! ]{1,}"
.MatchWildcards = True
End With
Do While .Find.Execute
'If you want to remove the "http://" part, unstet next line.
'.Text = Mid(.Text, 8, Len(.Text) - 7)
.Duplicate.AutoFormat
.Collapse wdCollapseEnd
Loop
End With
End With
Application.ScreenUpdating = True
lbl_Exit:
Exit Sub
End Sub
|
|
#5
|
|||
|
|||
|
Thanks, gmaxey! But the macro returns "Do While .Find.Execute" Not valid!!.
|
|
#6
|
|||
|
|||
|
Did you modify that code in some way? It runs here without error.
|
|
#7
|
||||
|
||||
|
Quote:
As Greg said, you at least need .MatchWildCards = true PS: When posting code, please use the code tags - inserted by the # button on the posting menu
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
|
#8
|
|||
|
|||
|
Yes, I just copied & pasted it as is into Normal.dotm. But the result is always the same: "Do While .Find.Execute" Not valid!!
I am sorry about the missing code tags! I always use the # button on the posting menu, but it doesn't work. And I can prove it. |
|
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Find string, Replace with dot tab | dhapp | Word | 5 | 03-27-2023 07:23 AM |
| Find and select all string of simlar pattern | anon123 | Word | 4 | 04-20-2016 11:41 PM |
| How to find all string within string. | PRA007 | Word VBA | 18 | 02-12-2016 08:11 PM |
Why is this Find string not working
|
TechEd | Word VBA | 5 | 07-05-2014 08:12 PM |
Bad view when using Find and Find & Replace - Word places found string on top line
|
paulkaye | Word | 4 | 12-06-2011 11:05 PM |