在网页抓取后使用VBA在Excel中删除连接

在网页抓取后使用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等。有没有办法根据名字删除连接?

+0

你看[QueryTables.Add方法(Excel)](https://msdn.microsoft.com/en-us/vba/excel-vba/articles/querytables-add-method-excel) – noas

比方说,你要删除的所有连接,除连接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 

希望这有助于!