Consulting

Results 1 to 4 of 4

Thread: VBA to find text in Word, replace with multiple lines of text

  1. #1

    VBA to find text in Word, replace with multiple lines of text

    Having issues writing script to find a single tag, and replace it with multiple lines of text.

    I wrote some VBA to find a tag such as:

    <<testtag>>

    And looking to replace it with something like below:

    <h2>Live Chat</h2>
    <p>A <a href="https://www.comm100.com/blog/live-chat-benefits.html">research report</a> found that Live Chat was hands down the preferred method of communication for online shoppers when compared to other service channels. A <a href="https://www.business2community.com/b2b-marketing/4-powerful-ways-live-chat-website-improves-b2b-inbound-sales-01775265">separate study</a> by the American Marketing Association states that customers that use live chat are three times more likely to make a purchase compared to those who don’t.</p><br>
    <p>a <b>Best practices</b> for live chat include:</p>


    The problem is it only replaces with the first line above: "<h2>Live Chat</h2>"

    Any ideas? Below is the chunk of code responsible for this (please note I am using excel to execute in Word):

                                         
    With WordDoc.Content.Find
     .Text = TagName
    .Replacement.Text = TagValue
    .Wrap = wdFindContinue
    .Execute Replace:=wdReplaceAll 'Find & Replace all instances
     End With
    This has been cross posted at https://www.msofficeforums.com/word-...tml#post147653

  2. #2
    VBAX Sage SamT's Avatar
    Joined
    Oct 2006
    Location
    Near Columbia
    Posts
    7,709
    Location
    Thread Moved to Word Forum
    I expect the student to do their homework and find all the errrors I leeve in.


    Please take the time to read the Forum FAQ

  3. #3
    Quote Originally Posted by noslenwerd View Post
    Having issues writing script to find a single tag, and replace it with multiple lines of text.

    I wrote some VBA to find a tag such as:

    <<testtag>>

    And looking to replace it with something like below:

    <h2>Live Chat</h2>
    <p>A <a href="https://www.comm100.com/blog/live-chat-benefits.html">research report</a> found that Live Chat was hands down the preferred method of communication for online shoppers when compared to other service channels. A <a href="https://www.business2community.com/b2b-marketing/4-powerful-ways-live-chat-website-improves-b2b-inbound-sales-01775265">separate study</a> by the American Marketing Association states that customers that use live chat are three times more likely to make a purchase compared to those who don’t.</p><br>
    <p>a <b>Best practices</b> for live chat include:</p>


    The problem is it only replaces with the first line above: "<h2>Live Chat</h2>"

    Any ideas? Below is the chunk of code responsible for this (please note I am using excel to execute in Word):

                                         
    With WordDoc.Content.Find
     .Text = TagName
    .Replacement.Text = TagValue
    .Wrap = wdFindContinue
    .Execute Replace:=wdReplaceAll 'Find & Replace all instances
     End With
    This has been cross posted at https://www.msofficeforums.com/word-...tml#post147653 omegle new
    It seems like you're having trouble with your VBA script for finding and replacing text in Word with multiple lines of text. The issue you're facing is that it only replaces with the first line of the replacement text. It looks like you're using Excel to execute this in Word.


    One potential solution could be to use the Replace function instead of the Find method in VBA. Here's an example of how you might do this:


    vba
    Copy
    Sub ReplaceTextInWord()
        Dim WordApp As Object
        Dim WordDoc As Object
        Dim TagName As String
        Dim TagValue As String
    
    
        ' Set up the Word application and document
        Set WordApp = CreateObject("Word.Application")
        WordApp.Visible = True
        Set WordDoc = WordApp.Documents.Open("C:\path\to\your\document.docx")
    
    
        ' Define the tag and replacement text
        TagName = "<<testtag>>"
        TagValue = "<h2>Live Chat</h2>" & vbCrLf & _
                   "<p>A <a href=""https://www.comm100.com/blog/live-chat-benefits.html"">research report</a> found that Live Chat was hands down the preferred method of communication for online shoppers when compared to other service channels. A <a href=""https://www.business2community.com/b2b-marketing/4-powerful-ways-live-chat-website-improves-b2b-inbound-sales-01775265"">separate study</a> by the American Marketing Association states that customers that use live chat are three times more likely to make a purchase compared to those who don’t.</p><br>" & vbCrLf & _
                   "<p>a <b>Best practices</b> for live chat include:</p>"
    
    
        ' Perform the replacement
        WordDoc.Content.Text = Replace(WordDoc.Content.Text, TagName, TagValue)
    
    
        ' Save and close the document
        WordDoc.Save
        WordDoc.Close
        WordApp.Quit
    End Sub
    This code opens the Word document, performs the replacement using the Replace function, and then saves and closes the document. You can adjust the paths and file names as needed.


    Please give this a try and let me know if it helps!
    Last edited by georgiboy; 04-17-2024 at 02:28 AM. Reason: Added code tags

  4. #4
    Moderator VBAX Wizard Aussiebear's Avatar
    Joined
    Dec 2005
    Location
    Queensland
    Posts
    5,185
    Location
    Welcome VBAX mariakenneth. Thank you taking the time to post a suggestion.
    Remember To Do the Following....
    Use [Code].... [/Code] tags when posting code to the thread.
    Mark your thread as Solved if satisfied by using the Thread Tools options.
    If posting the same issue to another forum please show the link

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •