Excel VBAを活用した新しいレシピ収集の自動化

この記事では、Excel VBAを使用してレシピサイトから新しいレシピを自動的に収集する方法について詳しく解説します。VBAの詳しい基本知識はショートコードを通してすでに取得されていると思いますので、ここではその応用としての利用方法に焦点を当てます。具体的なコード例とその詳細な解説、さらなる応用例を3つ紹介します。

目次

Excel VBAの基本

Excel VBA(Visual Basic for Applications)は、Microsoft Excelに組み込まれたプログラミング言語です。これを用いると、単純作業の自動化だけでなく、高度なデータ分析やレポート作成も可能になります。

そもそも、どこにVBAコードを書いて、どう実行すれば良いのか分からない場合は、以下の記事をご参照ください。

Excel VBAを活用した新しいレシピ収集の方法

VBAを使用してウェブサイトから情報を収集する場合、主にIE(Internet Explorer)の操作を模倣する方法を取ります。以下は、基本的なVBAコードの例です。


Sub CollectRecipe()
    Dim IE As Object
    Dim doc As HTMLDocument
    Dim recipes As Object
    
    ' IEを開く
    Set IE = CreateObject("InternetExplorer.Application")
    IE.Visible = True
    ' レシピサイトにアクセス
    IE.Navigate "https://www.example-recipe.com/new-recipes"
    ' ページの読み込み完了を待つ
    Do While IE.Busy Or IE.readyState <> 4
        DoEvents
    Loop
    ' ドキュメントの取得
    Set doc = IE.document
    ' 新しいレシピのリストを取得
    Set recipes = doc.getElementsByClassName("recipe-title")
    
    Dim i As Integer
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1")
    ' シートにレシピ名を書き込む
    For i = 0 To recipes.Length - 1
        ws.Cells(i + 1, 1).Value = recipes.Item(i).innerText
    Next i
    
    ' IEを閉じる
    IE.Quit
End Sub

コードの詳細解説

このコードは、Internet Explorerを操作して特定のレシピサイトを開き、新しいレシピのタイトルをExcelのシートに自動的に書き込むものです。

1. `CreateObject(“InternetExplorer.Application”)`でIEを操作するためのオブジェクトを作成します。
2. `IE.Navigate`メソッドで指定したURLにアクセスします。
3. `Do While`ループを使用して、ページの読み込みが完了するのを待ちます。
4. ページから新しいレシピのタイトルを取得し、Excelシートに書き込みます。

応用例1: レシピの詳細情報も取得する

レシピのタイトルだけでなく、詳細な説明や材料リストも取得することができます。以下は、そのためのVBAコードの例です。


' ... (前述のコードの続き)

' 新しいレシピの詳細情報を取得
Set recipeDetails = doc.getElementsByClassName("recipe-details")

' シートにレシピの詳細情報を書き込む
For i = 0 To recipeDetails.Length - 1
    ws.Cells(i + 1, 2).Value = recipeDetails.Item(i).innerText
Next i

' ...

応用例2: 複数のページからレシピを収集する

レシピサイトには複数のページにまたがって新しいレシピが掲載されている場合があります。複数のページから情報を収集するためのコードの例を紹介します。


' ... (前述のコードの続き)

Dim pageNum As Integer
For pageNum = 1 To 5 ' 5ページ分のレシピを収集
    IE.Navigate "https://www.example-recipe.com/new-recipes?page=" & pageNum
    ' 各ページからレシピ情報を収集するコード
    ' ...
Next pageNum

' ...

応用例3: 収集したレシピをカテゴリ別に整理する

収集したレシピをExcel内でカテゴリ別に整理する方法を考えます。以下のコードは、収集したレシピの中から「デザート」カテゴリのものだけを別のシートに移動する例です。


' ... (前述のコードの続き)

Dim dessertWs As Worksheet
Set dessertWs = ThisWorkbook.Sheets("Desserts")

Dim lastRow As Long
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row

Dim r As Range
Dim dessertRow As Integer
dessertRow = 1

For Each r In ws.Range("A1:A" & lastRow)
    If InStr(r.Value, "デザート") > 0 Then
        dessertWs.Cells(dessertRow, 1).Value = r.Value
        r.EntireRow.Delete
        dessertRow = dessertRow + 1
    End If
Next r

' ...

まとめ

Excel VBAを活用することで、レシピサイトから新しいレシピの情報を自動的に収集し、さらにその情報を効率的に整理することが可能です。VBAの基本を理解している方なら、この記事で紹介したコードをベースにさらなる応用やカスタマ

イズが可能です。この機会に、VBAを使ったデータ収集の自動化にチャレンジしてみてはいかがでしょうか。

VBAも良いけどパワークエリも良い

VBAの解説をしてきましたが、VBAは正直煩雑でメンテナンス性が悪いです。最近はモダンExcelと呼ばれるパワークエリやパワーピボットへのシフトが進んできています。本サイトでもパワークエリの特集をしており、サンプルデータを含む全11回の学習コンテンツでパワークエリを習得することができます。

クリックするとパワークエリの全11講座が表示されます。

パワーピボットの記事はありません。興味がある場合は、書籍で学んでみてください

コメント

コメントする

目次