前提・実現したいこと
お疲れ様です。
VBA初心者です。
現在職場でOutlookの特定のフォルダに受信したメールをOnenoteに送信する
という作業をOutlookのVBAを使用して自動化しようとしています。
具体的には
未処理フォルダに受信されたメールを確認し、
特定の宛先が記載されていた場合そのメールをOneNoteに送り
該当メールを処理済フォルダに移動
この処理をフォルダのメールの数分だけ繰り返すという処理のコードを作成したいです。
以下に記載しているソースコードでは
未処理フォルダがMyFolder_A、処理済フォルダがMyFolder_Bの想定です。
発生している問題・エラーメッセージ
実際に動かして見たところ1件目のメールの処理では正常にフォルダ移動までできているものの
2件目の処理でMyItem.GetInspectoy.Displyの部分でエラーが発生してしまいます。。。
おそらくOneNoteに送信した時にアクティブウインドウがOneNoteに移った影響かなと考えています。
MyItem.GetInspectoy.Displyの上にMsgBoxを置いたところメッセージボックスを押せば
最後まで正常に動作することを確認できていますが、
1件の処理ごろにわざわざメッセージボックスを消しに行くの手間でしかないので
最初にマクロ開始をしたら未処理フォルダのすべてのメールに対して処理を行ってくれるマクロを作成したいと
考えています。
なにか皆様で思い当たる知見がありましたら教えて頂きたいです。
※下記ソースコードは会社で実際記載したものを
自宅で思い出しながら書いたものなので何か過不足があるかもしれないです。。
というかあると思います。。
該当のソースコード
Outlook
1
Sub Send_OneNote()
Dim MyItem As Outlook.MailItem
Dim MyFolder As Outlook.MAPIFolder
Dim MyNameSpace As Outlook.Namespace
Set MyNameSpace = Aplication.GetNamespace("MAPI")
Set MyMailFolder = MyNameSpace.GetDefaultFolder(olFolderInbox)
Set MyFolder_A = MymailFolder.Folders("A")
Set MyFolder_B = MymailFolder.Folders("B")
For i = 1 To MyFolder_A.Items.Count
If InStr(MyItem.To, "test") > 0 Then
Set MyItem = MyFolder_A.Items(1) MsgBox MyItem.To 'これを消すとエラーが発生する Set MyItem = Aplication.ActiveExplorer().Selection(1) MyItem.GetInspectoy.Disply MyItem.GetInspector.CommandBars.ExcuteMso ("MoveToOneNote") MyItem.Close (0) MyItem.Move MyFolder_B End If
Next i
End Sub
補足情報(FW/ツールのバージョンなど)
使用しているOfficeのバージョンは2016です