概要
SeleniumBasicのコレクション用クラス。VBAのCollectionと異なり、扱い方は一次元配列とほぼ同等。
オブジェクト設定
・変数宣言
Dim List As List
Dim List As New List
※Driverから独立して使用する場合は、New付が必須
文法
Set List = Driver.[FindElements]
links.[メソッド]
メソッド・プロパティ
メソッド
スクロールできます
Name | 解説 | ShortExample |
---|---|---|
Add | リストに値を追加 | List.Add "hoge" |
AddRange | リストに複数の値を追加 (利用不可) | |
Contains | リストに検索値が含まれていればTrueを返す (実質利用不可) | |
Distinct | リスト内重複削除 | links.Distinct |
First | リスト内最初のアイテムを貸す | Debug.Print List.First |
Get | 指定のインデックスの値を取得(=Item) | Debug.Print List.Get(1) |
Insert | 指定のインデックスに値を挿入する | List.Insert 1, "age" |
Last | リスト内最後のアイテムを貸す | Debug.Print List.Last |
RemoveAt | 指定のインデックスから値を削除する | List.RemoveAt 1 |
Set | 指定のインデックスの値を上書き | List.Set 1, "sage" |
Sort | リストを昇順で並び替え | links.Sort |
ToExcel | リストをExcelに出力 | links.ToExcel |
Values | リストを配列で返す | Target() = links.Values |
※Short Exampleは、動作確認ができたコードを記載しています。
プロパティ
スクロールできます
Name | 解説 | ShortExample |
---|---|---|
Count | リストのアイテム数を貸す | Debug.Print List.Count |
Item | 指定したインデックスの値を返す | Debug.Print List.Item(1) |
※Short Exampleは、動作確認ができたコードを記載しています。
Example
ListLinks
Private Sub ListLinks()
Dim Driver As New ChromeDriver
Driver.Get "https://en.wikipedia.org/wiki/Main_Page"
Dim links As List
Set links = Driver.FindElementsByTag("a").Attribute("href")
Debug.Print links.Count
links.Distinct
links.Sort '昇順のみ
Debug.Print links.Item(276) 'メモリ上重複データが残っている。⇒Distinct後は、個別アイテムの操作はしない方が良い。
links.ToExcel
Debug.Print links.Count
Driver.Quit
End Sub
Use_ListAdd
Private Sub Use_ListAdd()
Dim List As New List
List.Add "hoge"
Debug.Print List.Last
Debug.Print List.Count
List.Insert 1, "age"
List.RemoveAt 1
List.Set 1, "sage"
Debug.Print List.First
Debug.Print List.Count
Debug.Print List.Get(1)
Debug.Print List.Item(1)
End Sub
Use_ListValues
Private Sub Use_ListValues()
Dim Driver As New ChromeDriver
Driver.Get "https://en.wikipedia.org/wiki/Main_Page"
Dim links As List
Set links = Driver.FindElementsByTag("a").Attribute("href")
links.Distinct
Dim target(): target() = links.Values 'Targetへ重複削除後のデータ数が代入された
Debug.Print UBound(target)
Dim buf
For Each buf In target
Debug.Print buf
Next buf
Driver.Quit
End Sub
Distinct_Test
Private Sub Distinct_Test()
Dim List As New List
List.Add "sage"
List.Add "sage"
Debug.Print List.Item(1)
Debug.Print List.Item(2)
List.Distinct
Debug.Print List.Count 'Countでは、1を返す(重複削除されている)
List.ToExcel 'Excel出力は1アイテムで返す
Debug.Print List.Item(1)
Debug.Print List.Item(2) 'Distinct後も値が出力される
Set List = Nothing
Debug.Print List.Contains("sage") '常にFalseを返す
End Sub
SeleniumeBasicでExcelシートの利用 usage_excel
SeleniumBasicでExcelシートのセルを利用したスクレイピング例を紹介します。 セルのテキストでWeb検索 Examplesのsheet1シート内のセルに入力されているテキストで...