Solved

Highlight text on a webpage

Posted on 2002-05-06
26
680 Views
Last Modified: 2013-12-16
Does anyone knows how to highlight some text in a webpage. Like to make the background of all the occurances of word "hello" on the webpage to say red color.

Ajay Chadha
0
Comment
Question by:AJAY CHADHA
  • 14
  • 11
26 Comments
 
LVL 16

Expert Comment

by:Richie_Simonetti
ID: 6991512
Hi, with automation it could be possible. How do you manage that web page?
0
 
LVL 8

Author Comment

by:AJAY CHADHA
ID: 6992869
Basiclaly, I am using Internet Explorer Object

like

Dim IE as InternetExplorer

So, I think, something related to change in IE.Document

What do you say..??
0
 
LVL 20

Expert Comment

by:hes
ID: 6994570
Try something like this:

Option Explicit
Dim WithEvents IE As InternetExplorer
Dim Complete As Boolean

Private Sub Form_Load()
Dim sHtml As String
Dim ff As Integer
Complete = False
Set IE = New InternetExplorer
IE.Visible = True
IE.Navigate2 "www.allapi.net"
Do While Complete = False
  DoEvents
Loop
sHtml = IE.Document.body.innerHTML

sHtml = Replace(sHtml, "the", "<font color=red>the</font>")
ff = FreeFile()
Open "C:\temp\doc.html" For Output As #ff
Print #ff, sHtml
Close #ff

DoEvents
   
IE.Navigate2 "C:\temp\doc.html "




End Sub
Private Sub IE_DocumentComplete(ByVal pDisp As Object, URL As Variant)

  Complete = True

End Sub
0
 
LVL 16

Expert Comment

by:Richie_Simonetti
ID: 6995163
Sorry, this is the closest i can reach, maybe you could work from it:

Option Explicit

Dim WithEvents IE As InternetExplorer
Private Sub Command1_Click()
Dim ieDoc As HTMLDocument
   Set ieDoc = IE.document
   With ieDoc
       Dim TxtRng As IHTMLTxtRange
       Dim sel As IHTMLTxtRange
       Set TxtRng = .body.createTextRange
       If TxtRng.findText(Text1.Text) = True Then
           TxtRng.Select
           Set sel = ieDoc.selection.createRange
           sel.Text = "pings"
       Else
           MsgBox "Text not found", vbInformation, App.EXEName
       End If
   End With
End Sub

Private Sub Form_Load()
Set IE = New InternetExplorer
With IE
    .navigate "http://www.experts-exchange.com/visualbasic/"
    .Visible = True
End With
End Sub


Private Sub ie_DocumentComplete(ByVal pDisp As Object, URL As Variant)
If (pDisp Is IE) Then
   Command1.Enabled = True
Else
   Command1.Enabled = False
End If
End Sub


0
 
LVL 8

Author Comment

by:AJAY CHADHA
ID: 6997105
Ok Guys, thanks

I'll give it a try..!!

Ajay Chadha
0
 
LVL 8

Author Comment

by:AJAY CHADHA
ID: 6997542
Hello Richie,

By running your code, VB gave error at Dim IE as HTMLDocument that the type is not defined and the same error at Dim TxtRng As IHTMLTxtRange
0
 
LVL 8

Author Comment

by:AJAY CHADHA
ID: 6997558
oops, i forgot to add the HTML object library. I'll just test it now
0
 
LVL 8

Author Comment

by:AJAY CHADHA
ID: 6997568
Hello Richie,

so far your code is the best one but it selects only first occurance. Is there a way to highlight all occurances of a particluar word..?
0
 
LVL 16

Expert Comment

by:Richie_Simonetti
ID: 6997606
Sorry, my mistake.
i hadn't time to try it but i think is possible.
Unfortunatelly, i don't know how select all instances at same time. For each one, maybe with a loop until...
Some like:

do while TxtRng.findText(Text1.Text) = True
loop

The major problem is how turn selected text to, say, red.
The object hasn't style member or some like that that we could use.
Let me know.
0
 
LVL 16

Accepted Solution

by:
Richie_Simonetti earned 100 total points
ID: 6997988
I got it!

Private Sub Command1_Click()
Dim ieDoc As HTMLDocument
  Set ieDoc = IE.document
  With ieDoc
      Dim TxtRng As IHTMLTxtRange
      Dim sel As IHTMLTxtRange
      Set TxtRng = .body.createTextRange
      Do While TxtRng.findText(Text1.Text) = True
          TxtRng.Select
          Set sel = ieDoc.selection.createRange
          'sel.Text = "pings"
        sel.pasteHTML "<font color=green>" & sel.Text & "</font>"
       '   MsgBox "Text not found", vbInformation, App.EXEName
       Loop
  End With
End Sub
0
 
LVL 8

Author Comment

by:AJAY CHADHA
ID: 6998098
Thanks Richie,

You did it man..!!

Thanks a lot.!

Ajay Chadha
0
 
LVL 16

Expert Comment

by:Richie_Simonetti
ID: 6998653
Yeah, sometimes coin falls in the right place.
Thanks for "A" grade.
By the way, how is your site?
0
 
LVL 8

Author Comment

by:AJAY CHADHA
ID: 7003537
Hello Richie,

Is there any way to change the back color of the text instead of changing the forecolor..?

Ajay Chadha
0
VMware Disaster Recovery and Data Protection

In this expert guide, you’ll learn about the components of a Modern Data Center. You will use cases for the value-added capabilities of Veeam®, including combining backup and replication for VMware disaster recovery and using replication for data center migration.

 
LVL 8

Author Comment

by:AJAY CHADHA
ID: 7711786
Hello Richie,

Is there any way to change the back color of the text instead of changing the forecolor..?
0
 
LVL 16

Expert Comment

by:Richie_Simonetti
ID: 7717132
hum...
I didn't see your previous comment.
I doubt. there is no property of textrange that we could use to do that.
A question: Those pages belongs to you?. I mean, did you create it or end user has the option to load "ANY" page?
Let me know ASAP.
0
 
LVL 8

Author Comment

by:AJAY CHADHA
ID: 7730399
end user has the option to load "ANY" page
0
 
LVL 16

Expert Comment

by:Richie_Simonetti
ID: 7732149
Well, i am not sure but it is an idea:
We could use a document.write method to link that page to a stylesheet previously created and apply a class style from it in the selected text.
do you know what i mean?
0
 
LVL 8

Author Comment

by:AJAY CHADHA
ID: 7752950
Richie, Can you please elaborate on this issue a little more. I am not getting to you properly on this point.
0
 
LVL 16

Expert Comment

by:Richie_Simonetti
ID: 7757641
did you use style sheets before,didn't you?
I saw your site a time ago and was thinking that your html knowledge would be helping on this.
0
 
LVL 16

Expert Comment

by:Richie_Simonetti
ID: 8191744
Chadha, maybe it will not be useful to you now but i didn't forget the problem, so:

Private Sub Command1_Click()
 Set ieDoc = IE.document
 With ieDoc
     Dim TxtRng As IHTMLTxtRange
     Dim sel As IHTMLTxtRange
     Set TxtRng = .body.createTextRange
     Do While TxtRng.findText("comment") = True
         TxtRng.Select
         Set sel = ieDoc.selection.createRange
         sel.Text = "pings"
         sel.execCommand "backcolor", False, "blue"
      Loop
 End With
End Sub
0
 
LVL 8

Author Comment

by:AJAY CHADHA
ID: 9294233
Hello Richie,

How are you my friend ?

I need some more help reharding the Document Object. IS there an easy way to get all the links of a webpage using something like

for all links in IE.document

list1.additem link

next

and what is the most suitable way to click a link on a webpage programmticaly thru VB code. The links will be from ie.document

Looking to hear from you with sample code. I'll post points for you for this help.
0
 
LVL 16

Expert Comment

by:Richie_Simonetti
ID: 9295750
Hi, there is actually a Links collection in the IE object model so if you use:

Dim WithEvents IE As InternetExplorer
Sub test()
Set IE = New InternetExplorer
With IE
    .navigate "http://www.experts-exchange.com/Programming/Programming_Languages/Visual_Basic/Q_20297499.html#9294233"
    .Visible = True
End With
End Sub

Private Sub IE_DocumentComplete(ByVal pDisp As Object, URL As Variant)
If (pDisp Is IE) Then
    Dim lnk 'As IHTMLLinkElement
    For Each lnk In IE.document.links
        Debug.Print lnk.href
    Next
End If
End Sub

0
 
LVL 8

Author Comment

by:AJAY CHADHA
ID: 9307432
Hello Richie,

Your help is much appreciated. Is there any way to click on a particular link programatically ?

Good Luck,

Ajay Chadha :)
0
 
LVL 16

Expert Comment

by:Richie_Simonetti
ID: 9308971
Yes,
Private Sub IE_DocumentComplete(ByVal pDisp As Object, URL As Variant)
If (pDisp Is IE) Then
   Dim lnk 'As IHTMLLinkElement
   For Each lnk In IE.document.links
       Debug.Print lnk.href
       if instr(1,lnk.href,"experts-exchange",vbtextcompare) then ' or whatever you would check
                lnk.click
                exit for   ' or whatever you need
       end if
   Next
End If
End Sub
0
 
LVL 8

Author Comment

by:AJAY CHADHA
ID: 9334901
Thanks Buddy!

Here comes your points :)

http://www.experts-exchange.com/Programming/Programming_Languages/Visual_Basic/Q_20735459.html

Good Luck,

Ajay Chadha
0
 
LVL 8

Author Comment

by:AJAY CHADHA
ID: 9419904
Hello Richie,

Your points are still waiting for you on the link above.

Good Luck,

Ajay Chadha :)
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

If you have ever used Microsoft Word then you know that it has a good spell checker and it may have occurred to you that the ability to check spelling might be a nice piece of functionality to add to certain applications of yours. Well the code that…
Objective of This Article In 1990’s, when I was a budding software professional, I had a lot of confusion about which stream or technology, I had to choose to build my career. In those days, I had lot of confusion like whether to choose System so…
The purpose of this video is to demonstrate how to integrate Mailchimp with Facebook. This will be demonstrated using a Windows 8 PC. Mailchimp and Facebook will be used. Log into your Mailchimp account. : Click on your name. Go to Account Setti…
The purpose of this video is to demonstrate how to set up basic WordPress SEO. This will be demonstrated using a Windows 8 PC. The plugin used will be WordPress SEO by Yoast. Go to your WordPress login page. This will look like the following: myw…

863 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

21 Experts available now in Live!

Get 1:1 Help Now