Home |
Search |
Today's Posts |
#1
Posted to microsoft.public.excel.programming
|
|||
|
|||
scraping text from the active window
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 |
#2
Posted to microsoft.public.excel.programming
|
|||
|
|||
scraping text from the active window
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. |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
Similar Threads | ||||
Thread | Forum | |||
how to open a workbook per active window | Excel Discussion (Misc queries) | |||
missing Active Window bar | New Users to Excel | |||
How to Determine if Application Window Still Active | Excel Discussion (Misc queries) | |||
Active Window Question | Excel Discussion (Misc queries) | |||
Web scraping | Excel Worksheet Functions |