Excel宏实现查询A列sku在得物的价格
时间: 2024-03-18 22:42:58 浏览: 97
下面是一个简单的优化方案:
1. 使用Excel内置的Web查询功能,直接从得物网站上抓取价格信息。
2. 将sku和价格信息保存到一个字典中,避免重复查询。
3. 在查询时,首先检查字典中是否已经存在该sku的价格信息,如果存在,则直接使用该信息,否则进行Web查询,并将查询到的价格信息保存到字典中。
下面是一个示例的VBA代码:
```VBA
Option Explicit
Private priceDict As Object
Sub getPrice()
Dim lastRow As Long
Dim sku As String
Dim url As String
Dim html As String
Dim price As String
' 初始化字典
Set priceDict = CreateObject("Scripting.Dictionary")
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To lastRow
sku = Cells(i, 1).Value
If priceDict.exists(sku) Then
price = priceDict(sku)
Else
url = "https://detail.dewu.com/item?id=" & sku
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;" & url, Destination:=Range("$B$" & i))
.Name = "item?id=" & sku
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingNone
.WebTables = "class:price-num"
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
End With
price = Cells(i, 2).Value
priceDict.Add sku, price
End If
Next i
End Sub
```
这个示例中,我们使用了Excel内置的Web查询功能来抓取得物网站上的价格信息。在查询时,我们首先检查字典中是否已经存在该sku的价格信息,如果存在,则直接使用该信息,否则进行Web查询,并将查询到的价格信息保存到字典中。这样就可以避免重复查询,提高效率。
需要注意的是,在使用Web查询时,需要将查询结果保存到指定的单元格中,然后再从该单元格中读取价格信息。在上面的代码中,我们将查询结果保存到B列中,然后从B列中读取价格信息。
阅读全文