2017-07-28 107 views
0

我有一個基於動態鏈接的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

回答

0

比方說,你要刪除的所有連接,除連接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 

希望這有助於!