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