VBAでyahooメールを受信して見た



The following two tabs change content below.
アバター

taka

あることがキッカケでVBAを独学で勉強しました、今ではブログを通してVBAでできることを解説しつつ、VBAや他の言語の勉強、ブログ運営の勉強をしています(^^♪

どうも、takaです(^^)

皆さんはExcelでメールを受けとろうと思った時にはどうしますか?

Outlookを操作して~とかそういう感じだと思います・・・・ですが!

実はそれ以外にも方法はあるんです(^^♪

今回はOfficeTanaka様のコードを参考にしてyahooメール(Gamilも可)を受信して見たお話です:(^_^)
参考:OfficeTanaka:「メールを受信する」

Excel VBAでメールを受信するには

さてVBAでメールを受信するには「BASP21」というDLL(ダイナミックリンクライブラリ )を使用します。詳しい解説は参考サイト様を参照してもらうとして、簡単に言うと「メールの送受信やHTTP・FTP機能を追加できるファイル(ライブラリ)」といえば良いのでしょうか・・・このDLLを使用して今回はVBAでyahooメールの受信をしていきたいと思います!

VBAでメールの受信をする方法:1「BASP21」のインストール

まず始めに「BASP21」をインストールします、インストールはこちら

最終更新が15年も前ということで、かなり昔になっておりますが、Windows10,Excel2013の環境でも動作が確認できました。

VBAでメールの受信をする方法:2 Yahooメールのサーバー情報を見つける

さて、無事にBASP21をインストールできたとして、次に設定に欠かすことが出来ない「サーバーの情報」を探しに行きましょう。

メール受信に必要な情報は

  1. 受信メールサーバー
  2. アカウント名
  3. パスワード

の3つです。まず一つ目の受信メールサーバーの情報ですが、今回は受信の設定をするのみです。Yahooの受信メールサーバーは【pop.mail.yahoo.co.jp】となります。

次にアカウント名ですが、アカウント名はYahoo!メールアドレスの「@yahoo.co.jpより前の部分がアカウント名となります、「abc@yahoo.co.jp」の場合[abc]がアカウント名ということになります。

最後にパスワード、これはYahooメールにログインするときに入力しているパスワードを入力してください!

これで準備は完了です!

Yahooメールのサーバーの情報はこちらに記載があります。
Gmailの情報はこちら

VBAでメールの受信をする方法:3 実際にメールを受信してみる

では実際にVBAでメールを受信してみましょう!

今回使用するコードはこちら、フォルダの存在チェックだけ追加させていただきましたが、ほとんどのコートは【参考:OfficeTanaka:「メールを受信する」】から流用させていただきました(;^ω^)

サンプルコードへの注意点

  1. メールファイル自体は同じ階層のmailフォルダに保存される設定になっています。保存先がないと受信できませんのでmailフォルダを作成しておいてください。
  2. このコードを使用した場合にはメールを取得するには時間がかかります。あくまでVBAでこんな事まで出来るのか、程度に思っていただけることを想定しております、メールソフトと同じようにはいきませんのであくまで参考までにお使いください。
Sub 受信()

Dim bobj, ar, Mail, retv
    Dim Server As String
    Dim User As String
    Dim Pass As String
    Dim Command As String
    Dim Folder As String
    Dim Para As String
    Dim objFso As Object
    Set objFso = CreateObject("Scripting.FileSystemObject")
        
    Set bobj = CreateObject("basp21")              ''BASP21

    Server = Worksheets("Sheet2").Range("B2").Text 'POP3サーバーチェック
    If Server = "" Then
     MsgBox "サーバー情報が空欄です"
    Exit Sub
    End If
    
   User = Worksheets("Sheet2").Range("B4").Text  ''アカウント名チェック
    If User = "" Then
     MsgBox "アカウント名が空欄です"
    Exit Sub
    End If
                           
    Pass = Worksheets("Sheet2").Range("B5").Text 'パスワードチェック
    If Pass = "" Then
     MsgBox "パスワードが空欄です"
    Exit Sub
    
    End If


'保存先であるmailフォルダの存在を確認
If objFso.FolderExists(ThisWorkbook.Path & "\mail") = False Then
    MsgBox "保存先のフォルダーが存在しません"
    Exit Sub
    End If

Set objFso = Nothing
    
    
    
   Folder = "<" & ThisWorkbook.Path & "\mail"     ''保存するフォルダ
   
   Command = "SAVEALL"                            ''コマンド
 
 ar = bobj.RcvMail(Server, User, Pass, Command, Folder)
    If IsArray(ar) Then
        Para = "from:subject:"
        For Each Mail In ar
            retv = bobj.ReadMail(Mail, Para, Folder)
            If Not IsArray(retv) Then
                MsgBox "メールの受信に失敗しました"
            Else
            With Worksheets("Sheet1")
               .Cells(Rows.Count, 1).End(xlUp).Offset(1, 0) = retv(0)   ''From
               .Cells(Rows.Count, 2).End(xlUp).Offset(1, 0) = retv(1)    ''Subject
               .Cells(Rows.Count, 3).End(xlUp).Offset(1, 0) = retv(2)      ''Body
           End With
            End If
         DoEvents
        Next Mail
    Else
        MsgBox "新着メールはありません"
    End If
    Set bobj = Nothing
End Sub

ダウンロード

当サイトの免責事項をお読みになってからお使いください。

フォロー・チャンネル登録お願いします

VBA以外についてのブログはこちら↓

https://yb-log.com/

■Twitterフォロー

■YouTubeチャンネル登録

ファイルやコードの利用、WEBサイトの利用について

サンプルコードなどは当サイトの免責事項をよくお読みになってからお使いください。

Sponsored Link

 

WordPressでブログを始めるなら

WordPress簡単インストール&安心の安定性

レンタルサーバー Xserver

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です