有一个网站:Tin number search。我有一个满是锡号(销售税号码)的excel表,我必须填写锡号部分,并将名称填回到工作表中,无论如何,我可以自动化这一点,因为我试图使用机械化,但它回应空白答复。一些用于代码测试的示例(有效) TIN编号为:
27200599589V
27940018928V
27901053455V
发布于 2015-12-10 20:57:10
使用以下代码:
Sub Utility()
Dim objIE As Object, htmldoc As Object, data, i As Long, lrow As Long
Dim TinNo As String
Cells(1, 2).Select
Range(Selection, Selection.End(xlDown)).Select
lrow = Selection.Count
For i = 1 To lrow
Cells(i, 2) = cleartext(Cells(i, 2).Value)
On Error Resume Next
Next
Set objIE = CreateObject("InternetExplorer.Application")
With objIE
.Navigate "http://mahavat.gov.in/Tin_Search/Tinsearch.jsp"
Do While .readyState <> 4: DoEvents: Loop
Set TIN = .document.getelementsbyname("tin")
Set htmldoc = CreateObject("HTMLfile")
'data = Range("B1:G" & lrow)
On Error Resume Next
For i = 1 To lrow
Set TIN = .document.getelementsbyname("tin")
Cells(i, 2).Select
If Not IsError(Cells(i, 2)) Then
TIN.Item(0).Value = Cells(i, 2)
.document.getElementById("Submit").Click
Do While .Busy Or .readyState <> 4: DoEvents: Loop
htmldoc.body.innerhtml = objIE.document.body.innerhtml
temp = Trim(Split(htmldoc.getElementsByTagName("Table")(14).innertext, Cells(i, 2))(1))
If Err.Number <> 0 Then
.Navigate "http://mahavat.gov.in/Tin_Search/Tinsearch.jsp"
Do While .Busy Or .readyState <> 4: DoEvents: Loop
Err.Clear
Cells(i, 3) = "Invelid TIN(Shl'd Start with 27,Totl 12 Chr)"
Cells(i, 4) = "Invelid TIN"
Else
Cells(i, 3) = Mid(temp, InStrRev(temp, " ") + 1, Len(temp))
Cells(i, 4) = Trim(Split(temp, Cells(i, 3))(0))
End If
End If
Next
End With
End Sub
Function cleartext(inputstring As String) As String
Dim onlynumbers As String
onlynumbers = OnlyNums(inputstring)
'MsgBox onlynumbers
onlynumbers = Mid(onlynumbers, InStr(1, onlynumbers, "27"), 11) & "V"
'MsgBox onlynumbers
If Len(onlynumbers) < 12 Then
cleartext = CVErr(xlErrValue)
End If
cleartext = onlynumbers
End Function
Function OnlyNums(sWord As String) As String
Dim sChar As String
Dim x As Integer
Dim sTemp As String
sTemp = ""
For x = 1 To Len(sWord)
sChar = Mid(sWord, x, 1)
If Asc(sChar) >= 48 And _
Asc(sChar) <= 57 Then
sTemp = sTemp & sChar
End If
Next
OnlyNums = sTemp
End Functionhttps://stackoverflow.com/questions/33824752
复制相似问题