[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『マクロによるOutlookメール新規作成について』(たなか)
Excelの表からOutlookの新規メール作成は何とかできましたが、
【表の中から一部の列だけメール作成】ができません。
1列目に見出しがあります。
A B C D E
番号 宛先 件名 本文 ステータス
AにはRow()-1のナンバリングをしてます。
ユーザーフォームを利用して、テキストボックスでAの番号を入力したら、
その列だけメール作成、
もしくは、Eのステータスが未送信のものだけコンボボックスに表示してそこから選択するようなマクロはできないのでしょうか。
わかりづらく申し訳ありませんが、ご教示ください。
< 使用 Excel:Excel2016、使用 OS:Windows10 >
マクロもデータも何も判らない状態では、誰も答えられないです。 まずはステップ実行して、ご自分でデバッグし、エラーになる直前でどういう状態になっているのかを調べてみてください。(例えば、問題のデータを先頭に移動してからステップ実行するとか)
未送信のものだけ選択表示してから対象指定なんて、そんな作るのも使うのも面倒な機能を考えずとも、「未送信」なもの全部対象にしたコードにしておけば、「送信保留」とか違う文字列に変えるだけで送信しなくなるのでは?
(???) 2018/10/26(金) 12:58
勝手な解釈もあるかもしれませんが、 「Excelの表からOutlookでメールを作る部分はできているが、どの番号のものを作成するかを ユーザーフォームで指定してやりたい。 指定はテキストボックスやコンボボックスから番号を指定したい。 ただし、コンボボックスには未送信のものだけを列挙したい。」 と受けとらえましたが合ってますかね?
で、まずはユーザーフォーム(Userform1)にコンボボックス(ComboBox1)とコマンドボタン(CommandButton1)を1つずつ配置。
コンボボックスはテキストボックスを兼ねてます(直接入力してもいいし、リストから選択してもいい)。
フォームモジュールに Private Sub CommandButton1_Click() Dim i Dim n As Long If IsNumeric(Me.ComboBox1.value) Then n = Val(Me.ComboBox1.value) With ActiveSheet i = Application.Match(n, .Range("A:A"), 0) If IsError(i) Then MsgBox "該当番号が見つかりません", vbCritical Unload Me Exit Sub End If Call MakeMail(.Range("B" & i).value, .Range("C" & i).value, .Range("D" & i).value) End With End If Unload Me End Sub
Private Sub UserForm_Initialize() Dim i As Long With ActiveSheet For i = 2 To .Range("E" & .Rows.Count).End(xlUp).Row If .Range("E" & i).value = "未送信" Then Me.ComboBox1.AddItem .Range("A" & i).value End If Next i End With End Sub
標準モジュールに、 Sub FormOpen() UserForm1.Show End Sub
Sub MakeMail(toAddress As String, Subject As String, mailBody As String)
On Error GoTo ErrHandler
Dim outlookObj Dim mailItemObj
'メール作成に必要なOutlookオブジェクトを生成する Set outlookObj = CreateObject("Outlook.Application") Set mailItemObj = outlookObj.CreateItem(olMailItem)
'メール情報の設定 mailItemObj.To = toAddress mailItemObj.Subject = Subject mailItemObj.Body = mailBody
'下書き保存(保存したければコメントを外す) 'mailItemObj.Save
'メール表示 mailItemObj.Display
'オブジェクトの解放 Set mailItemObj = Nothing Set outlookObj = Nothing
Exit Sub
' 例外処理 ErrHandler: Set mailItemObj = Nothing Set outlookObj = Nothing
MsgBox "メール作成時に例外エラー発生"
End Sub
とはりつけてFormOpenを実行。 (ろっくん) 2018/10/26(金) 13:49
ありがとうございます。
無事に思い描いていたとおりのものができました。
とても助かりました。
(たなか) 2018/10/26(金) 16:14
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.