Il existe 2 techniques que j'utilise pour "VBA". Je vais décrire les 1 par un seul.
1) À L'Aide De FireFox / Firebug Addon / Fiddler
2) à l'Aide d'Excel intégré de la facilité à obtenir des données à partir du web
Depuis ce post sera lu par de nombreux donc je vais couvrir même les plus évidentes. N'hésitez pas à sauter n'importe quelle partie, vous savez
1) À L'Aide De FireFox / Firebug Addon / Fiddler
FireFox : http://en.wikipedia.org/wiki/Firefox
Téléchargement gratuit (http://www.mozilla.org/en-US/firefox/new/)
Firebug Addon: http://en.wikipedia.org/wiki/Firebug_%28software%29
Téléchargement gratuit (https://addons.mozilla.org/en-US/firefox/addon/firebug/)
Fiddler : http://en.wikipedia.org/wiki/Fiddler_%28software%29
Téléchargement gratuit (http://www.fiddler2.com/fiddler2/)
Une fois que vous avez installé Firefox, installer Firebug l'Addon. Firebug Addon vous permet d'inspecter les différents éléments dans une page web. Par exemple, si vous souhaitez connaître le nom d'un bouton, il suffit de faire un click droit et cliquer sur "Inspecter l'Élément avec Firebug" et il vous donnera tous les détails dont vous aurez besoin pour ce bouton.
![enter image description here]()
Un autre exemple serait de trouver le nom d'une table sur un site web, qui contient les données que vous devez mettre au rebut.
J'utilise Fiddler seulement quand je suis à l'aide de XMLHTTP. Il m'aide à voir l'info exacte étant passé lorsque vous cliquez sur un bouton. En raison de l'augmentation du nombre de BOTS qui racler les sites, la plupart des sites maintenant, pour éviter automatique de la destruction, la capture de votre les coordonnées de la souris et de l'information et de la fiddler vous permet réellement de débogage que l'info est passée. Je ne vais pas entrer dans les détails ici à ce sujet que cette information peut être utilisée à des fins malveillantes.
Maintenant, nous allons prendre un exemple simple sur la façon de gratter l'URL affichée dans votre question
http://www.espncricinfo.com/big-bash-league-2011/engine/match/524915.html
Laissez-moi d'abord de trouver le nom de la table qui a cette info. Faites simplement un clic droit sur le tableau et cliquez sur "Inspecter l'Élément avec Firebug" et il vous donnera le dessous de l'instantané.
![enter image description here]()
Alors maintenant, nous savons que nos données sont stockées dans une table appelée "inningsBat1" Si nous pouvons extraire le contenu de la table dans un fichier Excel, alors nous pouvons certainement travailler avec des données pour effectuer notre analyse. Voici un exemple de code qui provoque le vidage de la table dans la feuille Sheet1
Avant de poursuivre, je vous recommande, la fermeture de tous Excel et le démarrage d'une nouvelle instance.
Lancement VBA et insérer un objet Userform. Placez un bouton de commande et un webcrowser de contrôle. Votre Userform pourrait ressembler à ceci
![enter image description here]()
Collez ce code dans la zone de code objet Userform
Option Explicit
'~~> Set Reference to Microsoft HTML Object Library
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub CommandButton1_Click()
Dim URL As String
Dim oSheet As Worksheet
Set oSheet = Sheets("Sheet1")
URL = "http://www.espncricinfo.com/big-bash-league-2011/engine/match/524915.html"
PopulateDataSheets oSheet, URL
MsgBox "Data Scrapped. Please check " & oSheet.Name
End Sub
Public Sub PopulateDataSheets(wsk As Worksheet, URL As String)
Dim tbl As HTMLTable
Dim tr As HTMLTableRow
Dim insertRow As Long, Row As Long, col As Long
On Error GoTo whoa
WebBrowser1.navigate URL
WaitForWBReady
Set tbl = WebBrowser1.Document.getElementById("inningsBat1")
With wsk
.Cells.Clear
insertRow = 0
For Row = 0 To tbl.Rows.Length - 1
Set tr = tbl.Rows(Row)
If Trim(tr.innerText) <> "" Then
If tr.Cells.Length > 2 Then
If tr.Cells(1).innerText <> "Total" Then
insertRow = insertRow + 1
For col = 0 To tr.Cells.Length - 1
.Cells(insertRow, col + 1) = tr.Cells(col).innerText
Next
End If
End If
End If
Next
End With
whoa:
Unload Me
End Sub
Private Sub Wait(ByVal nSec As Long)
nSec = nSec + Timer
While Timer < nSec
DoEvents
Sleep 100
Wend
End Sub
Private Sub WaitForWBReady()
Wait 1
While WebBrowser1.ReadyState <> 4
Wait 3
Wend
End Sub
Lancez maintenant votre formulaire et cliquez sur le bouton de Commande. Vous remarquerez que les données sont sous-évaluées dans la feuille Sheet1. Voir instantané
![enter image description here]()
De même, vous pouvez gratter les autres informations aussi bien.
2) à l'Aide d'Excel intégré de la facilité à obtenir des données à partir du web
Je crois que vous utilisez Excel 2007, donc je vais prendre cela comme un exemple à gratter de la mentionnés ci-dessus lien.
Accédez à la feuille Sheet2. Maintenant, accédez à l'Onglet Données, puis cliquez sur le bouton "Web" sur l'extrême droite. Voir instantané.
![enter image description here]()
Entrez l'url dans la "Nouvelle Fenêtre de Requête Web" et cliquez sur "Go"
Une fois que la page est téléchargée, sélectionnez la table que vous souhaitez importer en cliquant sur la petite flèche comme illustré dans la capture d'écran. Une fois fait, cliquez sur "Importer"
![enter image description here]()
Excel vous demande où vous souhaitez que les données à importer. Sélectionnez la cellule et cliquez sur OK. Et vous avez terminé! Les données seront importées dans la cellule spécifiée.
Si vous le souhaitez, vous pouvez enregistrer une macro, et d'automatiser cette ainsi :)
Voici la macro que j'ai enregistré.
Sub Macro1()
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://www.espncricinfo.com/big-bash-league-2011/engine/match/524915.html" _
, Destination:=Range("$A$1"))
.Name = "524915"
.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 = """inningsBat1"""
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
End With
End Sub
Espérons que cette aide. Laissez-moi savoir si vous avez encore quelques questions.
Sid