Outlookの練習-2

Option Explicit

Sub SendComplexEmail_HTML()
‘Microsoft Outlook 16.0 libraryを early bindingする

    'Outlookは、このあたりのdimやsetはもう丸覚えしかない。テクニカルな説明は存在するが、何回聞いても理解できない。ExcelとOutlookはそもそも構造が違うので。
    Dim olApp As Outlook.Application
    Dim olEmail As Outlook.MailItem
    Set olApp = New Outlook.Application
    Set olEmail = olApp.CreateItem(olMailItem)

    With olEmail
            .BodyFormat = olFormatHTML
            .Display

            .HTMLBody = "Dear Someone<br><br>" & GetMovieDataHTML & .HTMLBody

            .To = "akijsaito@mac.com"
            .Subject = "Movie Report"
    End With

End Sub

Function GetMovieDataHTML() As String
‘これは面白い。どこかで役に立つ

    Dim FilmColumn As Range, FilmRow As Range, r As Range, c As Range
    Dim str As String

    Sheet1.Activate
    Set FilmRow = Range("A2", Range("A1").End(xlDown))

    str = "<table>"
    For Each r In FilmRow   '全部の行をスイープする
            str = str & "<tr>"
            Set FilmColumn = Range(r, r.End(xlToRight))
                    For Each c In FilmColumn        '全部のカラムをスイープする
                            str = str & "<td>" & c.Value & "</td>"

‘ ‘最後のカラムのあとにvbtabを入れないようにするため
‘ If c.Column < r.End(xlToRight).Column Then
‘ str = str & vbTab
‘ End If

                    Next c

                    str = str & "</tr>"

‘ ‘最後の行のあとにvbnewlineを入れないようにするため
‘ If r.Row < Range(“A1”).End(xlDown).Row Then
‘ str = str & vbNewLine
‘ End If

    Next r

    str = str & "</table>"

    GetMovieDataHTML = str

End Function

‘ ‘ ‘ ‘ ‘ ‘ ‘ ‘ ‘ ‘

column1 column2
Row 2 Row 2

コメントを残す

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