从excel中提取数据用于VBA抓取中的input循环
我是VBA的一名完全新手,我认为我的头脑已经过时了,但是研究是必要的。 我遵循了一个伟大的在线教程系列 ,很遗憾,我没有帮助我解决一个大问题:数据input。
我的目标是从谷歌专利刮取专利数据。 为此,Google专利网站的专利号码是唯一标识的。 所以我想达到的是以下几点:
- 从excel的列表中提取专利号码
- 使用该号码访问特定的网页
- 提取申请和专利发表年份,以及专利号(如支票)
- 全部保存在一张Excel表格中
现在,我可以让2,3和4工作,但是这个循环允许我从excel中提取专利号码,并将其放入我缺less的代码中。
这是当前的代码:
Private Sub CommandButton4_Click() Dim obMF As Object Dim patent As String Dim grant_date As String Dim app_date As String Dim patent_number As String patent_number = insert.Text ' insert.Text refers to a textbox in my interface Call gotopat(patent_number, patent, app_date, grant_date) found.Text = patent grantdate.Text = grant_date appdate.Text = app_date output_row = 1 'Set the output row as 1 (this is where the title is) Do DoEvents output_row = output_row + 1 'Increase output row with 1 Loop Until Sheets("bkcit").Range("B" & output_row) = "" 'Continue loop until that cell ~ Range is blank. 'Once a blank is found, we can put new data in there 'Store data into Worksheet "bkcit" Sheets("bkcit").Range("B" & output_row) = patent Sheets("bkcit").Range("C" & output_row) = grant_date Sheets("bkcit").Range("D" & output_row) = app_date
在这段代码中, found.Text
, grantdate.Text
和appdate.Text
来自于完美工作的appdate.Text
函数。 关于这个function的重要的事情是:
Function gotopat(patent_number As String, patent As String, app_date As String, grant_date As String) ' A Bunch of other stuff obMF.Navigate ("http://www.google.com/patents/US" & patent_number & "?") 'All the scraping code'
所以,我想用一个循环来取代patent_number = insert.Text
,这个循环看起来在我的excel表格bkcit,A列中,基本上循环了所有的唯一专利号码。 我试过了
input_row = 1 Do DoEvents input_row = input_row + 1 Range("C" & input_row) = patent_number Loop Until Sheets("bkcit").Range("A" & input_row) = ""
但是,这似乎删除了单元格A2中的第一个专利号码,仅此而已。
我在想,我已经非常接近一个可行的解决scheme,但是你的帮助将会一如既往!
提前致谢
西蒙
如果我理解正确的话,你有这样一个专利号码列:
而且你想循环每一个数字,并做一些事情。 尝试这个:
Sub loopPatents() Dim patentNumber As Range Dim patentRange As Range Set patentRange = Worksheets(1).Range("A2:A10") For Each patentNumber In patentRange MsgBox ("Patent number: " & patentNumber) 'Do your stuff with the patent number here Next patentNumber End Sub