Excel VBA模块覆盖值
有覆盖值的问题。也就是说,当我输入一个以上的值时,我的模块会在某个数据库上获取并验证该值,它会覆盖已经导入的信息,这些信息是从同一行的第一个值验证的 它实际上应该将信息存储在从中导入值的同一行中。 小插图Excel VBA模块覆盖值,excel,vba,web-scraping,Excel,Vba,Web Scraping,有覆盖值的问题。也就是说,当我输入一个以上的值时,我的模块会在某个数据库上获取并验证该值,它会覆盖已经导入的信息,这些信息是从同一行的第一个值验证的 它实际上应该将信息存储在从中导入值的同一行中。 小插图 No. Entered Values How it stores / How it should be stored 1. 111 *333imported* *111imported* 2. 222
No. Entered Values How it stores / How it should be stored
1. 111 *333imported* *111imported*
2. 222 *222imported*
3. 333 *333imported*
我的代码
Sub SearchGB()
Dim objIE As InternetExplorer
Dim ele As Object
Dim t As Date
Dim GrantNum As String
Dim i As Long
Dim j As Integer
Dim wsh As Worksheet
Dim Addme As Range
Dim rng As Range
Dim cell As Range
Set wsh = ThisWorkbook.Sheets("Great Britain")
Set Addme = wsh.Cells(Rows.Count, "A").End(xlUp)
Set objIE = New InternetExplorer
Set rng = wsh.Range("B4:B100")
For Each cell In rng.Cells
If InStr(1, cell, "EP") > 0 Then
GrantNum = cell
Const MAX_WAIT_SEC As Long = 10 '<==Adjust wait time
If InStr(1, GrantNum, "EP") = 0 Then
MsgBox "Please enter correct form of Grant Number"
Else
objIE.Visible = True
objIE.navigate "https://www.ipo.gov.uk/p-ipsum/Case/PublicationNumber/" & GrantNum
End If
While objIE.Busy Or objIE.readyState < 4: DoEvents: Wend
t = Timer
Do
DoEvents
On Error Resume Next
Set ele = objIE.document.getElementById("externalcontent")
If Timer - t > MAX_WAIT_SEC Then Exit Do
On Error GoTo 0
Loop While ele Is Nothing
j = 0
With wsh
Set ele = objIE.document.getElementById("MainContent_BibliographyViewUserControl_BibliographyTable").getElementsByTagName("td")
For i = 0 To ele.Length - 1
If Trim$(ele.Item(i).innerText) = "Applicant / Proprietor" Then
Addme.Cells(j, 8).Value = ele.Item(i + 1).innerText
End If
If Trim$(ele.Item(i).innerText) = "Application Number" Then
Addme.Cells(j, 3).Value = ele.Item(i + 1).innerText
End If
If Trim$(ele.Item(i).innerText) = "Publication Number" Then
Addme.Cells(j, 5).Value = ele.Item(i + 1).innerText
End If
If Trim$(ele.Item(i).innerText) = "Status" Then
Addme.Cells(j, 7).Value = ele.Item(i + 1).innerText
End If
If Trim$(ele.Item(i).innerText) = "Grant Date" Then
Addme.Cells(j, 6).Value = ele.Item(i + 1).innerText
End If
If Trim$(ele.Item(i).innerText) = "Filing Date" Then
Addme.Cells(j, 4).Value = ele.Item(i + 1).innerText
End If
Next i
End With
End If
Next cell
'objIE.Quit
End Sub
subsearchGB()
Dim objIE作为InternetExplorer
作为对象的Dim ele
日期
朦胧的GrantNum作为字符串
我想我会坚持多久
作为整数的Dim j
将wsh设置为工作表
Dim Addme As范围
变暗rng As范围
暗淡单元格作为范围
Set wsh=thishworkbook.Sheets(“大不列颠”)
Set Addme=wsh.Cells(Rows.Count,“A”).End(xlUp)
Set objIE=新的InternetExplorer
设置rng=wsh.范围(“B4:B100”)
对于rng.单元格中的每个单元格
如果仪表(1,单元格,“EP”)>0,则
颗粒=细胞
Const MAX_WAIT_second=10'MAX_WAIT_second然后退出Do
错误转到0
循环,而ele什么都不是
j=0
与wsh
Set ele=objIE.document.getElementById(“MainContent\u书目VIEWUserControl\u书目Table”).getElementsByTagName(“td”)
对于i=0到元件长度-1
如果Trim$(ele.Item(i).innerText)=“申请人/所有人”,则
Addme.Cells(j,8).Value=ele.Item(i+1).innerText
如果结束
如果Trim$(ele.Item(i).innerText)=“申请编号”,则
Addme.Cells(j,3).Value=ele.Item(i+1).innerText
如果结束
如果Trim$(ele.Item(i).innerText)=“出版物编号”,则
Addme.Cells(j,5).Value=ele.Item(i+1).innerText
如果结束
如果Trim$(ele.Item(i).innerText)=“Status”,则
Addme.Cells(j,7).Value=ele.Item(i+1).innerText
如果结束
如果Trim$(ele.Item(i).innerText)=“授予日期”,则
Addme.Cells(j,6).Value=ele.Item(i+1).innerText
如果结束
如果Trim$(ele.Item(i).innerText)=“提交日期”,则
Addme.Cells(j,4).Value=ele.Item(i+1).innerText
如果结束
接下来我
以
如果结束
下一个细胞
“objIE,退出
端接头
无论我在哪里写入
j=j+1
它都不起作用。将代码放在A列或在那里设置代码,j=0必须在每个单元格的外部,并且只有在您接受条件时才递增,在那里进行必要的调整。祝你好运
Sub SearchGB()
Dim objIE As InternetExplorer
Dim ele As Object
Dim t As Date
Dim GrantNum As String
Dim GrantNum2 As String
Dim i As Long
Dim j As Integer
Dim wsh As Worksheet
Dim Addme As range
Dim rng As range
Dim cell As range
Set wsh = ThisWorkbook.Sheets("Great Britain")
Set Addme = wsh.Cells(Rows.Count, "A").End(xlUp)
Set objIE = New InternetExplorer
Set rng = wsh.range("A1:A10")
j = 0
For Each cell In rng.Cells
If InStr(1, cell, "EP") > 0 Then
GrantNum = ThisWorkbook.Sheets("Great Britain").Cells(1, 1).Value 'cell
ThisWorkbook.Sheets("Great Britain").Cells(1, 2).Value = Left(GrantNum, Len(GrantNum) - 2)
GrantNum2 = ThisWorkbook.Sheets("Great Britain").Cells(1, 2).Value 'cell
Const MAX_WAIT_SEC As Long = 10 '<==Adjust wait time
If InStr(1, GrantNum, "EP") = 0 Then
MsgBox "Please enter correct form of Grant Number"
Else
objIE.Visible = True
objIE.navigate "https://www.ipo.gov.uk/p-ipsum/Case/PublicationNumber/" & GrantNum2
End If
While objIE.Busy Or objIE.readyState < 4: DoEvents: Wend
t = Timer
Do
DoEvents
On Error Resume Next
Set ele = objIE.document.getElementById("externalcontent")
If Timer - t > MAX_WAIT_SEC Then Exit Do
On Error GoTo 0
Loop While ele Is Nothing
j = j + 1
With wsh
Set ele = objIE.document.getElementById("MainContent_BibliographyViewUserControl_BibliographyTable").getElementsByTagName("td")
For i = 0 To ele.Length - 1
If Trim$(ele.Item(i).innerText) = "Applicant / Proprietor" Then
ThisWorkbook.Sheets("Great Britain").Cells(j + 1, "H").Value = ele.Item(i + 1).innerText
ElseIf Trim$(ele.Item(i).innerText) = "Application Number" Then
ThisWorkbook.Sheets("Great Britain").Cells(j + 1, "C").Value = ele.Item(i + 1).innerText
ElseIf Trim$(ele.Item(i).innerText) = "Publication Number" Then
ThisWorkbook.Sheets("Great Britain").Cells(j + 1, "E").Value = ele.Item(i + 1).innerText
ElseIf Trim$(ele.Item(i).innerText) = "Status" Then
ThisWorkbook.Sheets("Great Britain").Cells(j + 1, "G").Value = ele.Item(i + 1).innerText
ElseIf Trim$(ele.Item(i).innerText) = "Grant Date" Then
ThisWorkbook.Sheets("Great Britain").Cells(j + 1, "F").Value = ele.Item(i + 1).innerText
ElseIf Trim$(ele.Item(i).innerText) = "Filing Date" Then
ThisWorkbook.Sheets("Great Britain").Cells(j + 1, "D").Value = ele.Item(i + 1).innerText
End If
Next i
End With
End If
Next cell
'objIE.Quit
End Sub
subsearchGB()
Dim objIE作为InternetExplorer
作为对象的Dim ele
日期
朦胧的GrantNum作为字符串
Dim GrantNum2作为字符串
我想我会坚持多久
作为整数的Dim j
将wsh设置为工作表
Dim Addme As范围
变暗rng As范围
暗淡单元格作为范围
Set wsh=thishworkbook.Sheets(“大不列颠”)
Set Addme=wsh.Cells(Rows.Count,“A”).End(xlUp)
Set objIE=新的InternetExplorer
设置rng=wsh.范围(“A1:A10”)
j=0
对于rng.单元格中的每个单元格
如果仪表(1,单元格,“EP”)>0,则
GrantNum=ThisWorkbook.Sheets(“大不列颠”).Cells(1,1).Value'单元格
ThisWorkbook.Sheets(“大不列颠”).Cells(1,2).Value=Left(GrantNum,Len(GrantNum)-2)
GrantNum2=此工作簿.Sheets(“大不列颠”).Cells(1,2).Value'单元格
Const MAX_WAIT_second=10'MAX_WAIT_second然后退出Do
错误转到0
循环,而ele什么都不是
j=j+1
与wsh
Set ele=objIE.document.getElementById(“MainContent\u书目VIEWUserControl\u书目Table”).getElementsByTagName(“td”)
对于i=0到元件长度-1
如果Trim$(ele.Item(i).innerText)=“申请人/所有人”,则
此工作簿.Sheets(“大不列颠”).Cells(j+1,“H”).Value=ele.Item(i+1).内部文本
ElseIf Trim$(ele.Item(i).innerText)=“申请编号”,然后
此工作簿.Sheets(“大不列颠”).Cells(j+1,“C”).Value=ele.Item(i+1).内部文本
ElseIf Trim$(ele.Item(i).innerText)=“出版物编号”,然后
此工作簿.Sheets(“大不列颠”).Cells(j+1,“E”).Value=ele.Item(i+1).innerText
ElseIf Trim$(ele.Item(i).innerText)=“Status”然后
此工作簿.Sheets(“大不列颠”).Cells(j+1,“G”).Value=ele.Item(i+1).innerText
ElseIf Trim$(ele.Item(i).innerText)=“授予日期”,然后
此工作簿.Sheets(“大不列颠”).Cells(j+1,“F”).Value=ele.Item(i+1).内部文本
ElseIf Trim$(ele.Item(i).innerText)=“提交日期”
此工作簿.Sheets(“大不列颠”).Cells(j+1,“D”).Value=ele.Item(i+1).innerText
如果结束
接下来我
以
如果结束
下一个细胞
“objIE,退出
端接头
谢谢你,朋友,我做到了!:)通过你和我以前的代码的混合,我终于成功了
Sub SearchGB()
Dim objIE As InternetExplorer
Dim ele As Object
Dim t As Date
Dim GrantNum As String
Dim i As Long
Dim j As Integer
Dim wsh As Worksheet
Dim Addme As Range
Dim rng As Range
Dim cell As Range
Set wsh = ThisWorkbook.Sheets("Great Britain")
Set Addme = wsh.Cells(Rows.Count, "A").End(xlUp)
Set objIE = New InternetExplorer
Set rng = wsh.Range("B2:B100")
j = 0
For Each cell In rng.Cells
If InStr(1, cell, "EP") > 0 Then
GrantNum = cell
Const MAX_WAIT_SEC As Long = 10 '<==Adjust wait time
If InStr(1, GrantNum, "EP") = 0 Then
MsgBox "Please enter correct form of Grant Number"
Else
objIE.Visible = True
objIE.navigate "https://www.ipo.gov.uk/p-ipsum/Case/PublicationNumber/" & GrantNum
End If
While objIE.Busy Or objIE.readyState < 4: DoEvents: Wend
t = Timer
Do
DoEvents
On Error Resume Next
Set ele = objIE.document.getElementById("externalcontent")
If Timer - t > MAX_WAIT_SEC Then Exit Do
On Error GoTo 0
Loop While ele Is Nothing
j = j + 1
With wsh
Set ele = objIE.document.getElementById("MainContent_BibliographyViewUserControl_BibliographyTable").getElementsByTagName("td")
For i = 0 To ele.Length - 1
If Trim$(ele.Item(i).innerText) = "Applicant / Proprietor" Then
wsh.Cells(j + 1, "H").Value = ele.Item(i + 1).innerText
ElseIf Trim$(ele.Item(i).innerText) = "Application Number" Then
wsh.Cells(j + 1, "C").Value = ele.Item(i + 1).innerText
ElseIf Trim$(ele.Item(i).innerText) = "Publication Number" Then
wsh.Cells(j + 1, "E").Value = ele.Item(i + 1).innerText
ElseIf Trim$(ele.Item(i).innerText) = "Status" Then
wsh.Cells(j + 1, "G").Value = ele.Item(i + 1).innerText
ElseIf Trim$(ele.Item(i).innerText) = "Grant Date" Then
wsh.Cells(j + 1, "F").Value = ele.Item(i + 1).innerText
ElseIf Trim$(ele.Item(i).innerText) = "Filing Date" Then
wsh.Cells(j + 1, "D").Value = ele.Item(i + 1).innerText
End If
Next i
End With
End If
Next cell
objIE.Quit
End Sub
subsearchGB()
Dim objIE作为InternetExplorer
作为对象的Dim ele
日期
朦胧的GrantNum作为字符串
我想我会坚持多久
作为整数的Dim j
将wsh设置为工作表
Dim Addme As范围
变暗rng As范围
暗淡单元格作为范围
Set wsh=thishworkbook.Sheets(“大不列颠”)
Set Addme=wsh.Cells(Rows.Count,“A”).End(xlUp)
Set objIE=新的InternetExplorer
设置rng=wsh.范围(“B2:B100”)
j=0
对于rng.单元格中的每个单元格
如果仪表(1,单元格,“EP”)>0,则
颗粒=细胞
Const MAX_WAIT_second=10'MAX_WAIT_second然后退出Do
错误转到0
循环,而ele什么都不是
j=j+1
与wsh
Set ele=objIE.document.getElementById(“MainContent\u书目VIEWUserControl\u书目Table”).getElementsByTagName(“td”)
对于i=0到元件长度-1
如果Trim$(ele.Item(i).innerText)=“申请人/所有人”,则
wsh.Cells(j+1,“H”).Value=ele.Item(i+1).innerText
ElseIf Trim$(ele.Item(i).innerText)=“申请编号”,然后
wsh.Cells(j+1,“C”).Value=ele.Item(i+1).innerText
ElseIf Trim$(ele.Item(i).innerText)=“出版物编号”,然后
wsh.Cells(j+1,“E”).Value=ele.Item(i+1).innerText
ElseIf Trim$(ele.Item(i).innerText)=“Status”然后
wsh.Cells(j+1,“G”).Value=ele.Item(i+1).innerText
ElseIf Trim$(ele.Item(i).innerText)=“授予日期”,然后