在网页抓取后使用VBA在Excel中删除连接
问题描述:
我有一个基于动态链接的web抓取的连接。所以,我无法设置固定连接。下面的宏创建连接,然后更新工作表。在网页抓取后使用VBA在Excel中删除连接
With ThisWorkbook.Worksheets("Data").QueryTables.Add(Connection:= _
"<URL redacted>", Destination:=ThisWorkbook.Worksheets("Data").Range("$A$1"))
.Name = "DataPull"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlEntirePage
.WebFormatting = xlWebFormattingNone
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
.Delete
End With
该宏每隔1分钟运行一次以更新数据。所以,这会在每次运行时创建一个新的连接。我不想要这么多的连接存在,因为它们不会再被使用。 一旦网络抓取完成,我该如何删除连接? 还是有办法建立一个单一的连接,可以修改自己基于一个变量。变量是根据当前时间而变化的时间间隔。
我看着这个选项
For Each qr In ThisWorkbook.Queries
qr.Delete
Next qr
但也有其他两个固定连接,我不想删除。 创建的新连接具有名称Connection,Connection1等。有没有办法根据名字删除连接?
答
比方说,你要删除的所有连接,除连接1和连接2,尝试...
Dim Conn As WorkbookConnection
For Each Conn In ThisWorkbook.Connections
If Conn.Name <> "Connection1" And Conn.Name <> "Connection2" Then
Conn.Delete
End If
Next Conn
希望这有助于!
你看[QueryTables.Add方法(Excel)](https://msdn.microsoft.com/en-us/vba/excel-vba/articles/querytables-add-method-excel) – noas