2017-07-28 1 views
0

J'ai une connexion qui scrape Web basé sur un lien dynamique. Donc, je ne peux pas établir une connexion fixe. La macro suivante crée la connexion, puis met à jour la feuille de calcul.Supprimer la connexion dans Excel à l'aide de VBA après le scrappage Web

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 

Cette macro s'exécute toutes les minutes pour mettre à jour les données. Ainsi, cela crée une nouvelle connexion chaque fois qu'il s'exécute. Je ne veux pas que tant de connexions existent car elles ne seront plus utilisées. Comment supprimer la connexion une fois que le raclage Web est terminé? ou Existe-t-il un moyen de configurer une connexion unique qui peut se modifier en fonction d'une variable. La variable est les intervalles de temps qui varient en fonction de l'heure actuelle.

J'ai regardé cette option

For Each qr In ThisWorkbook.Queries 
    qr.Delete 
Next qr 

Mais il y a deux autres connexions fixes que je ne veux pas supprimer. Les nouvelles connexions créées portent le nom Connection, Connection1, etc. Est-il possible de supprimer les connexions en fonction du nom?

+0

Avez-vous regardé [Méthode QueryTables.Add (Excel)] (https://msdn.microsoft.com/fr-fr/vba/excel-vba/articles/querytables-add-method-excel) – noas

Répondre

0

Disons que vous voulez supprimer toutes les connexions, à l'exception Connection1 et Connection2, essayez ...

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 

Hope this helps!