从excel中提取数据用于VBA抓取中的input循环

我是VBA的一名完全新手,我认为我的头脑已经过时了,但是研究是必要的。 我遵循了一个伟大的在线教程系列 ,很遗憾,我没有帮助我解决一个大问题:数据input。

我的目标是从谷歌专利刮取专利数据。 为此,Google专利网站的专利号码是唯一标识的。 所以我想达到的是以下几点:

  1. 从excel的列表中提取专利号码
  2. 使用该号码访问特定的网页
  3. 提取申请和专利发表年份,以及专利号(如支票)
  4. 全部保存在一张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.Textgrantdate.Textappdate.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