View Single Post
 
Old 11-05-2022, 11:02 PM
m2ramos m2ramos is offline Windows 10 Office 2016
Novice
 
Join Date: Nov 2022
Posts: 2
m2ramos is on a distinguished road
Default Selection.Information not working as intended for selection position

Hello,

I'm fairly new to VBA coding and I have the code below that takes entries from a text file saved on local drive and searches a word document for matches. It then creates a hyperlink when it finds a string match. I've been playing around with a new subroutine that uses Selection.Information called getPosition. It should return the vertical and horizontal position of the current selection in reference to the page it's on. I called the sub in my code below within a Do While loop that searches for matches throughout the whole Active Document. I would expect the getPosition sub routine to display different numbers for each match it finds but right now, it's reporting the same position numbers for each match. I know on the page that these matches are in different positions. So I'm a bit confused. Can someone help me understand what I'm doing wrong?

Thanks.

Code:
Sub getPosition()
    Debug.Print Selection.Information(wdVerticalPositionRelativeToPage)
    Debug.Print Selection.Information(wdHorizontalPositionRelativeToPage)
End Sub

Sub CombinedTest()
    Dim directory As String
    Dim Raw As String
    Dim NumValues As Integer, J As Integer
    Dim strdocid As String
    Dim UserVals() As String
    'define the style
    Dim strStyle As String
    strStyle = "Subtle Emphasis"
    'set the search range
    Dim rngSearch As Range
    Set rngSearch = ActiveDocument.Range
    'set the search string - value set moved below
    Dim strSearch As String
    'set the target address for the hyperlink - value set moved below
    Dim strAddress As String
    
    directory = "C:\DaviesTmp\WIP\"
    Open (directory & "StringSearch.txt") For Input As #1
    Line Input #1, Raw
    NumValues = Val(Raw)
    ReDim UserVals(NumValues)
    
    For J = 1 To NumValues
        Set rngSearch = ActiveDocument.Range
        Line Input #1, UserVals(J)
        strdocid = Right(UserVals(J), 15)
    'strdocid finds DocID with extension counting in from right
        strSearch = Left(strdocid, 11)
    'strSearch finds DocID without extension using previous strdocid value counting in from left
        strAddress = UserVals(J)
        With rngSearch.Find
            Do While .Execute(findText:=strSearch, MatchWholeWord:=True, Forward:=True) = True
                With rngSearch 'we will work with what is found as it will be the selection
                getPosition
                ActiveDocument.Hyperlinks.Add Anchor:=rngSearch, Address:=strAddress
                    '.Style = ActiveDocument.Styles(strStyle) 'throw the style on it after the link-remove apostrophe at beginning if you need style change
                End With
                rngSearch.Collapse Direction:=wdCollapseEnd
                'keep it moving
            Loop
        End With
    Next J
    Close #1
End Sub
Reply With Quote