scraping text from the active window

  • Thread starter geoffrey pritchard tillingsley
  • Start date
G

geoffrey pritchard tillingsley

I'd like to be able to have excel scrape text from an active window
while I'm surfing. I can currently import a picture, but would prefer
the text.

I do a snapshot using the following code:

Public Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal
bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Public Const VK_SNAPSHOT = &H2C
Public Const KEYEVENTF_KEYUP = &H2


Sub screenshot()

For i = 1 To 10000
For j = 1 To 10000
Next
Next
keybd_event VK_SNAPSHOT, 1, 0, 0
Range("a5").Select
ActiveSheet.Paste

Application.ScreenUpdating = True

End Sub

The reason for the loop is to give me time to click on the desired
window after I start the macro.

My thinking is there is a possibility that

keybd_event VK_SNAPSHOT, 1, 0, 0

Could be changed to scrape the text instead of the snapshot.

I understand a website can be scraped, but prefer not to do it this
way. And I know I can hit control A, control C and control V in the
spreasheet, but prefer not to do it that way.

Thanks,

Geoffrey Pritchard Tillingsley
 
N

Nate Oliver

Hello Geoffrey,

Typically you want to set the object and grab the inner
text. I'd use an array and split it on VBCRLF.

So if you want to grab text from a non-framed window, like
msn.com, try something like:

Sub Download_Unread1()
Dim ie As Object, frm As Object, myArr
Set ie = GetObject(, "InternetExplorer.Application")
myArr = Split(ie.document.body.innerText, vbCrLf)
[a5].Resize(UBound(myArr) + 1) = Application.Transpose
(myArr)
Set ie = Nothing
End Sub

You'll need to tweak this for frames, i.e., a google
newsgroup thread:

http://groups.google.com/groups?hl=en&lr=&ie=UTF-
8&threadm=01bb9ff3%244a93f360%24LocalHost%
40dpmellon&rnum=1&prev=/groups%3Fq%3D%2522I%2Bhate%
2BAccess%2522%26hl%3Den%26lr%3D%26ie%3DUTF-8%26selm%
3D01bb9ff3%25244a93f360%2524LocalHost%2540dpmellon%26rnum%
3D1

Sub Download_Unread2()
Dim ie As Object, frm As Object, myArr
Set ie = GetObject(, "InternetExplorer.Application")
'0-Based, 0 grabs left frame, 1 grabs right frame.
myArr = Split(ie.document.frames
(1).document.body.innerText, vbCrLf)
[a5].Resize(UBound(myArr) + 1) = Application.Transpose
(myArr)
Set ie = Nothing
End Sub

Hope this helps.

Regards,
Nate Oliver
-----Original Message-----
I'd like to be able to have excel scrape text from an
active window while I'm surfing. I can currently import a
picture, but would prefer the text.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top