大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAを使った在宅でできる副業について、ご紹介します。実際に依頼されている案件について、簡単なVBAコードを作成して、必要なスキルについて解説していきます。案件を受注するには、クラウドソーシングを使う方法がありますので、併せてご紹介します。

はじめに

この記事では、Excel VBAを使った在宅でできる副業について、ご紹介します。

実際に依頼されているExcel VBAを作成する案件を見てみると、初級から中級、上級の内容があります。

それぞれの案件で、簡単にExcelのVBAコードを紹介していきます。

在宅で案件を受注するには、クラウドソーシングを使う方法があります。

クラウドソーシングは、クラウドワークスやランサーズ、ココナラといったサイトがあって、案件を受注することができます。

では、Excel VBAを使った在宅でできる副業について、解説していきます。

この記事で紹介すること

  • Excel VBAを使った副業のレベル
  • 案件を獲得する方法

目次

Excel VBAを作成する在宅の副業とは

Excel VBAは、Excelで操作する作業を、自動化することができることができます。

さらに、Excel内で操作できる内容だけでなく、他のアプリケーションと連携して、操作を自動化することができます。

Excel VBAで作成する内容は、このような作業を自動するツールを作成することになります。

Excel VBAでできること

簡単に、Excel VBAでできることについて、ご紹介します。

例えば、

  • データベースからの帳票を自動で作成
  • 請求書を自動で作成
  • 分析用のグラフを自動で作成
  • レポート作成を自動化する

といった、Excelで作業する内容を自動化できます。

さらに、Excel内での作業を自動化するだけでなく、

  • フォルダの一覧表を作成して自動で操作する
  • PowerPointと連携して自動で資料作成をする
  • Accessと連携してデータベースの管理をする
  • OutLookと連携してメールの送信を自動化
  • Googleをスクレイピングする
  • Webサイトから情報を自動で収集する

のように、Excel以外のアプリケーションとも連携して、自動化することができます。

Excel VBAの副業のレベル

では、Excel VBAの副業のレベルについて、ご紹介します。

Excel VBAで副業する際にどのぐらいのレベルが必要かがわかります。

実際に、クラウドソーシングのサイトで発注されている案件を、みてみましょう。

初級の案件

Excel VBAを使って、Excelにて領収書を作成して、PDFへ出力する、という仕事の依頼です。

クラウドワークスにて依頼されていた内容です。

初級の案件

クラウドワークスの案件1

手順としては、

  • データベースから領収書のフォームにデータを転記
  • ExcelをPDFに変換して保存

という流れを、Excel VBAで自動化するという感じです。

ボリュームとしては、2時間あれば、作成できそうな印象です。

金額は、おそらく2~3,000円程度でしょう。

簡単にVBAを作成

この仕事の依頼を簡単に作ってみるとこんな感じになります。

Sub TEST1()
    
    '請求書No.取得
    Dim No
    No = Worksheets("請求書").Cells(4, "H")
    
    Dim DB, A
    Set DB = Worksheets("DB")
    Set A = Worksheets("請求書")
    
    '最終行
    Dim LastRow
    LastRow = DB.Cells(Rows.Count, "A").End(xlUp).Row
    
    'データ貼り付け
    For i = 1 To LastRow
        If DB.Cells(i, 1) = No Then
            For j = 1 To 6
                A.Cells(j, "L") = DB.Cells(i, j + 1)
            Next
            Exit For
        End If
    Next
    
    'PDFに変換
    Dim FilePathPDF
    FilePathPDF = ThisWorkbook.Path & "\領収書.pdf"
    
    'PDFへ変換
    ThisWorkbook.ExportAsFixedFormat 0, FilePathPDF
        
End Sub

領収書に記載する情報がまとめられたデータベースがあります。

領収書に記載する情報をまとめたデータベース

領収を作成して、PDFに変換します。

領収書のフォームです。

領収書のフォーム

作成したい領収書のNo.を記載して、ボタンをクリックします。

領収書が作成されて、PDFに出力される
PDFに出力された結果

これで、領収書が作成されて、作成された領収書がPDFに出力されました。

という依頼内容です。

こちらは依頼の大枠について、記載しています。

実際は、依頼主の要望する仕様を加えると、もう少しVBAコードが増えてきます。

でも、ざっくりとした内容は理解できるかと思います。

中級の案件

中級の案件としては、次のようなもので、1つのExcelブックだけで完結する内容ではなく、別ブックを操作する必要があります。

中級の案件

クラウドワークス案件2

内容としては、Excelブックの複数シートから取得したデータを、別ブックのExcelに転記して、保存していくといった内容です。

手順としては、

  • ①Excel内の複数シートからデータを取得
  • ②別ブックに転記して保存する
  • ③複数ブックに①と②の手順を繰り返す

といった感じです。

こちらは、3時間程度かかりそうなイメージです。

金額は、おそらく10,000円程度でしょう。

簡単にVBAを作成

ちなみ仕様の大枠の部分を、VBAコードで記載すると、次のようになります。

Sub TEST2()
    
    Dim A, DB
    ReDim DB(1 To 12, 1 To 8) As Variant
    
    'データを取得
    For i = 1 To 12
        Set A = Worksheets(i & "月")
        For j = 1 To 8
            DB(i, j) = A.Cells(j + 1, "B")
        Next
    Next
    
    '商品名を取得
    Dim Pr
    With Worksheets("1月")
        Pr = .Range("A1").Resize(7).Offset(1, 0)
    End With
    
    
    Dim B
    Set B = Worksheets("集計")
    
    'ファイルパス名
    Dim FilePath
    
    'データを集計して別ブック保存
    For i = 1 To UBound(Pr, 1)
        B.Range("B1") = Pr(i, 1)
        For j = 1 To UBound(DB, 1)
            B.Range("B3").Offset(j, 0) = DB(j, i)
        Next
        '別ブック保存
        B.Copy
        FilePath = ThisWorkbook.Path & "\商品:" & Pr(i, 1) & ".xlsx"
        ActiveWorkbook.SaveAs FilePath
        ActiveWorkbook.Close
    Next
    
End Sub

ちょっと作成した内容をみていきます。

Excel内に複数シートを用意しました。

Excel内に複数シートを用意

これらの複数シートからデータを取得して、一つのシートにデータをまとめます。

複数シートからデータを取得

取得したら、別ブックに転記して、別ブックで保存していきます。

この手順を、商品A~商品Gで繰り返します。

別ブックにExcelデータを名前を付けて保存

別ブックにExcelのデータを保存できました。

といった感じですね。

こちらも、依頼主から要望のある仕様を加えると、もう少しVBAコードを書く必要があります。

Excel VBAで別ブックの操作ができるスキルがあれば、作成できる内容です。

上級の案件

上級案件としては、Excel VBAでのスクレイピングです。

Excel VBAでの案件で多いのが、このスクレイピングです。

スクレイピングは、Web上のサービスに自動でログインしたり、Web上のデータを自動で取得したりする技術のことです。

メルカリやAmazon、楽天サイトの情報を、自動で取得したいといった依頼が多いです。

スクレイピングの依頼としては、10,000~50,000円で発注されることが多いです。

クラウドワークスに依頼のあったスクレイピングの案件です。

上級案件

クラウドワークスに依頼のあったスクレイピングの案件

ブラウザにキーワードを入力して、検索結果から特定サイトのURLを取得する、というものです。

この依頼のExcel VBAを作成すると、作成する時間としては、5時間ぐらいかかりました。

手順としては、

  • ブラウザを起動
  • ブラウザの検索欄にキーワードを入力
  • 検索結果から特定サイトのURLを取得

といった感じです。

簡単にVBAを作成

こちらの内容を、Excel VBAで作ってみました。

SeleniumBasicをインストールして、作成しています。

Sub TEST3()

    Dim Driver As New Selenium.WebDriver
    Dim SKey As New Selenium.Keys
    Dim Elm As Selenium.WebElement
    Dim Elms As Selenium.WebElements
    Dim Search As Selenium.WebElement
    
    Driver.AddArgument "--incognito" 'シークレットモード
    Driver.Start "chrome", "https://www.yahoo.co.jp/"
    Driver.Get "/"
    
    Dim SiteURL
    SiteURL = "https://www.mercari.com/" 'URL
    Dim ReURL
    
    With Worksheets("取得").Range("A1").CurrentRegion
        KeyWords = .Resize(.Rows.Count - 1, 1).Offset(1, 0)
    End With
    
    For k = 1 To UBound(KeyWords, 1)
        
        ReURL = ""
        
        If k = 1 Then
            '1回目の検索
            Set Search = Driver.FindElementByXPath("//*[@id=""ContentWrapper""]/header/section[1]/div/form/fieldset/span/input")
            Search.Clear
            Search.SendKeys KeyWords(k, 1)
            Search.SendKeys SKey.Enter
        Else
            '2回目以降の検索
            Driver.FindElementByCss("#header > div.Header__wrap > div > div.Header__innerItem > div.SearchBox.SearchBox--north.js-SearchBox--north > form > div.SearchBox__searchInputWrap > button").Click
            On Error Resume Next
            Set Search = Driver.FindElementByXPath("//*[@id=""header""]/div[1]/div/div[2]/div[1]/form/div[1]/input[1]")
            If Err.Number <> 0 Then
                Set Search = Driver.FindElementByXPath("//*[@id=""header""]/div[1]/div/div[1]/div[1]/form/div[1]/input[1]")
            End If
            Search.SendKeys KeyWords(k, 1)
            Search.SendKeys SKey.Enter
        End If
        
        '検索した結果の全体を取得
        Set Elm = Driver.FindElementByClass("Contents__innerGroupBody")
        
        '全体の記事をオブジェクトに格納
        Set Elms = Elm.FindElementsByClass("sw-CardBase")
        '
        '1記事ずつループ
        For Each Elm In Elms
            Set Elm = Elm.FindElementByTag("a")
            If InStr(Elm.Attribute("href"), SiteURL) > 0 Then
                ReURL = Elm.Attribute("href") 'URL
                Exit For
            End If
        Next
        
        'セルにURLを入力
        With Worksheets("取得")
            .Cells(k + 1, "B") = ReURL
        End With
        
    Next
    
    Driver.Close
    Set Driver = Nothing
    
End Sub

Excelのシートにあらかじめ、キーワードを入力しておきました。

Excelのシートにあらかじめキーワードを入力

では、実行してみます。

ブラウザにキーワードが入力されて、検索結果が表示されます。

ブラウザにキーワードが入力されて検索されます

ブラウザの特定サイトを探して、URLを取得します。

取得したURLが、Excelのシートに入力されます。

取得したURLが、Excelのシートに貼り付けられる

これを繰り返して、全てのキーワードで、検索結果からURLを取得できます。

すべてのキーワードで検索して結果からURLを取得した結果

すべてのキーワードで、URLを取得できました。

といった感じの案件ですね。

スクレイピングの場合は、Web上のデータを取得するので、ちょっとしたHTMLの知識も必要です。

今回紹介した内容は、SeleniumBasicでのスクレイピングでした。

ただ、スクレイピングでの依頼では、IEでWeb操作できるように、という依頼内容が多いですね。

IEでのWeb操作だと、特定のソフトをインストールすることなく、Web操作を自動化できますので、依頼主としては作成物を扱いやすいですからね。

こんな感じで、Excel VBAの案件があります。

在宅でできる副業の案件を獲得する方法

在宅でできる副業の案件を獲得する方法は、クラウドソーシングで受注するという方法があります。

クラウドソーシングのサイトは、複数ありますので、Excel VBAの案件を受注したいという場合は、いくつか登録しておくとよいでしょう

クラウドソーシングができるサイト

クラウドソーシングの主なサイトとして、次のサイトがあります。

クラウドソーシングのサイト

この辺りが有名で市場規模も大きいです。

案件を受注する手順として、大きく2パターンあります。

  • ①クライアントが案件を登録して、ワーカーが受注する
  • ②ワーカーに、クライアントが案件を依頼する

という2パターンです。

クラウドワークスやランサーズは、①の方で、クライアントが案件を登録して、ワーカーが受注するという手順です。

反対に、ココナラは、ワーカーがサイトに登録して、クライアントが案件を依頼するという②の方です。

初級の案件から実績を積む

案件を受注するには、実績が必要になってきます。

実際に、案件の依頼条件に、「実績のある方」などの条件があったりします。

なので、案件の登録があるクラウドワークスやランサーズで、初級の案件でまずは実績を積むのが良いでしょう。

実績ができてきて、徐々に、中級や上級の案件に挑戦していけば、案件を受注しやすくなります。

おわりに 

この記事では、Excel VBAを使った在宅でできる副業について、ご紹介しました。

在宅で副業する案件を受注するには、クラウドソーシングを使う方法があります。

クラウドソーシングには、次の3つのサイトがありました。

クラウドワークスやランサーズには、Excel VBAを使った案件が複数あって、実際に依頼されている案件をみることができます。

依頼されている案件には、初級の案件や、中級、上級とさまざまな案件があります。

案件を受注するには、実績が必要になってきますので、まずは、初級の案件からスタートしていくのがベターですね。

実績を積んでいくと、中級や上級の案件が獲得しやすくなっていきます。

参考になればと思います。最後までご覧くださいまして、ありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

アーカイブから探す