Home >> ヒント・サンプル集 >> プログラムサンプル >> (VBA(Outlook)HTMLメールの作成

<VBA(Outlook)> HTMLメールの作成

OutlookでHTMLメールを送信する際に、別途作成したHTMLをプログラミング無しに使う方法が提供されていません。そこでHTMLを取り込むダイアログを作りました。
これにより、使い慣れたHTMLエディタで準備することができます

運用イメージは、
①新規メールを開く
②ボタンをクリックしてこの画面を呼び出す
③HTMLを貼り付けるか、ファイルを選択して読み込む
④必要に応じてHTMLを修正する
⑤OKボタンをクリックして画面を閉じる

注意:読み込むHTMLファイルはUTF-8に固定しています(37行目)


Outlook2013の例で説明します
ここに完成済ファイルがありますのでご自由にお使いください
※利用上の制限は一つだけ、”不具合は必ず報告してください” のみです
フォームを一から作る方法、インポートで済ませる方法も同梱しています

《概要》
①Outlookでフォームを作成します
 - HTML入力/修正用のテキストボックス(TextBox1)
 - ファイル読み込みボタン(B_READ)
 - OKボタン(B_OK)
 - キャンセルボタン(B_CLS)
 - 適用ボタン(B_APP)
 - フォームサイズ変更用のイメージ(Image1)
 を追加します
フォーム用モジュールは次のとおり
Dim wW, wH, tW, tH, bT, b1, b2, b3
Dim sw, xx, yy

Private Sub B_APP_Click()
    Call UpdHTML
    B_APP.Enabled = False
End Sub

Private Sub B_CLS_Click()
    Unload Me
End Sub

Private Sub B_OK_Click()
    Call UpdHTML
    Unload Me
End Sub

Sub UpdHTML()
    Set myItem = Application.ActiveInspector.CurrentItem
    With myItem
        .BodyFormat = olFormatHTML
        .HTMLBody = TextBox1.Text
    End With
    Set myItem = Nothing
End Sub

Private Sub B_READ_Click()
    wPath = saFindFile("読み込むHTML形式のファイルを指定してください", "c:\", "HTMLファイル (*.htm,html)", "*.HTM?")
    If wPath & "" = "" Then Exit Sub
    
    Dim sr      As Object
    Dim strData As String
    
    Set sr = CreateObject("ADODB.Stream")
    sr.Mode = 3 '読み取り/書き込みモード
    sr.Type = 2 'テキストデータ
    sr.Charset = "UTF-8" '文字コードを指定
    'sr.Charset = "Shift_JIS"
    
    sr.Open 'Streamオブジェクトを開く
    
    sr.LoadFromFile (wPath) 'ファイルの内容を読み込む
    
    sr.Position = 0 'ポインタを先頭へ
    TextBox1 = sr.ReadText(-1) 'データ読み込み
    sr.Close 'Streamを閉じる
    
    Set sr = Nothing 'オブジェクトの解放
    
End Sub

Private Sub Image1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    sw = -1
End Sub

Private Sub Image1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    If sw = -1 Then
        Image1.Move Image1.Left + X, Image1.Top + Y
        Me.Width = Image1.Left + Image1.Width
        Me.Height = Image1.Top + Image1.Height + 18
    End If
End Sub

Private Sub Image1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    sw = 0
End Sub

Private Sub TextBox1_Change()
    B_APP.Enabled = True
End Sub

Private Sub ResetIMG()
        Image1.Top = Me.Height - 38
        Image1.Left = Me.Width - 21
End Sub

Private Sub UserForm_Initialize()
    On Error Resume Next
    Set myItem = Application.ActiveInspector.CurrentItem
    TextBox1 = myItem.HTMLBody
    Set myItem = Nothing
    wW = Me.Width
    wH = Me.Height
    tW = TextBox1.Width
    tH = TextBox1.Height
    bT = B_OK.Top
    b1 = B_OK.Left
    b2 = B_CLS.Left
    b3 = B_APP.Left
    DoEvents
    B_APP.Enabled = False
    Call ResetIMG
End Sub

Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    Call ResetIMG
End Sub

Private Sub UserForm_Resize()
    wkW = Me.Width - wW
    If wkW > 0 Then
        TextBox1.Width = tW + wkW
        B_OK.Left = b1 + wkW
        B_CLS.Left = b2 + wkW
        B_APP.Left = b3 + wkW
    End If
    wkH = Me.Height - wH
    If wkH > 0 Then
        TextBox1.Height = tH + wkH
        B_READ.Top = bT + wkH
        B_OK.Top = bT + wkH
        B_CLS.Top = bT + wkH
        B_APP.Top = bT + wkH
    End If
    Call ResetIMG
End Sub

[関数] フォルダ選択ダイアログを使用していますので、モジュールに追加します

マクロ用(ボタンに登録するため)の関数も追加します
Sub HTMLMail()
    Form_HTML.Show
End Sub


最後にリボンにこのフォームを呼び出すマクロを登録して完了です
(通常このフォームは新規メール作成時に使用しますので、新規メール作成用のリボンに追加する手順です)

・新規メールを開き、リボンの右クリックからCustomize the Ribbon...を選択します
・画面右がリボンの設定状況です。新しいタブを作りたい場合は、New Tabボタンをクリックして新規タブを作成します。グループも作成されます
・作成されたタブおよびグループを選択し、Renameボタンをクリックして、それぞれの表示名(グループにはアイコンも)を設定します
・グループを選んだ状態で、左上の”Choose commands from”からMacrosを選択します
・下に作成したマクロ(2.2で作成した関数)が表示されますので、選択し、”Addボタンをクリックします”
・グループの下に追加されたら、選択し、Renameボタンをクリックして表示名とアイコンを設定します

これでリボンの設定は完了です
リボンに追加されたタブを選択し、アイコンをクリックすると作成したフォームが表示されます

  お気軽にご相談ください お問合せ・ご相談はこちら お問合せ・ご相談はこちら  
更新日:2017/02/27 13:34