こんにちは。
OUTLOOK VBA初心者になります。
今回、
①件名(subject)に特定の文字が含まれるメールが到着したら(イベント)、
②自動でそのメールが開かれ、
③本文(body)内からテキストを抜き出し、
④予めデスクトップ上に存在するxlsmを開き、
⑤抜き出したテキストをセル(※ここではA1)に入力し、
⑥xlsmのA1の値が変更になった事をイベントとして、エクセルマクロ(既に完成している)が作動する
事を目指しています。
下記がOUTLOOK VBAの標準モジュール内に作成しているマクロになります。
まずは①~⑤に関してご指摘頂ければ幸いです。
【質問1】
件名に該当する文字列があるメールをテストで送信してみましたが、
debug.print "目的のメールが到着しました。" の時点で反応しておりません。
ここはコードの問題でしょうか?
別にいくつかの可能性が考えられるでしょうか?
【質問2】
MailItem.Display は
実行時エラー'424' オブジェクトが必要です。
となります。
ここで目的のメールを開くにはどのように指定するのが正しいでしょうか?
【質問3】
②でわざわざメールを開くと、
最後にメールを閉じる記述も必要になるように思いますが、
メールを開かずにメールから本文を抜き出す事も可能でしょうか?
【質問4】
最後にコード以外の質問で申し訳ありません。
今回この作業だけの為の端末に組み込む予定です。
(常時電源はつけっぱなし、outlookも開きっぱなし)
上記のような目的の場合は
outlookもxlsmもわざわざ開いて閉じてをせずに、両方とも開きっぱなしで動かすものでしょうか?
質問が多くなりましたが、どうかご指南お願いします。
Sub macro1() '①メールが到着したら件名に特定の文字(※●●●●●●●●)が「含まれるか」を判断し、含まれる場合だけ動作に進む。 Dim objId As Object Set myNamespace = GetNamespace("MAPI") Set objId = myNamespace.GetItemFromID(EntryIDCollection) If InStr(objId.Subject, "●●●●●●●●") Then debug.print "目的のメールが到着しました。" '②到着した↑のメールを自動で開く MailItem.Display '③今まさに開いているメールオブジェクト本文の◇から始まる5文字を取得する Dim objItem As Object Dim objIns As Inspector Dim Ch_Lng1 As Long Dim mystr As String Set objIns = Application.ActiveInspector Set objItem = objIns.CurrentItem Ch_Lng1 = InStr(objItem.Body, "◇") If Ch_Lng1 > 0 Then mystr = Mid(objItem.Body, Ch_Lng1, 5) Dim objExcel As Excel.Application Dim wb As Workbook Dim ws As Worksheet Dim strFile As String '④予めデスクトップ上に存在するxlsmを開く strFile = "C:\Users\〇〇〇〇〇\Desktop\▲▲▲▲▲▲.xlsm" Set objExcel = New Excel.Application Set wb = objExcel.Workbooks.Open(strFile) Set ws = wb.Worksheets("Sheet1") ⑤抜き出したテキストをセル(※ここではA1)に入力 ws.Range("A1") = mystr End If End If End Sub
回答1件
あなたの回答
tips
プレビュー