いつもお世話になっております。masafumi55と申します。
ご覧になっていただきありがとうございます。
**(注)今回のコードはすべて、outlook側のvba、「Microsoft Outlook Objects の ThisOutlookSession」に記述しております。
**
目的
さて、表題の件ですが、「outlookにて"日報"という表題のメールを受信した際に、"新商品売価設定.xlsm"ファイルを開き、上書き保存して閉じるという処理を考えております。(本来は、ただ開いて保存するだけでなく一定の処理を予定しておりますが割愛します。)
問題
今回問題となっているのは、下の**「コード:呼び出し元」にある★①の部分において、「 Application.DisplayAlerts = False」**という記述があるのですが、この部分がoutlookのvba上ですと、エラーとなってしまいます。
しかしながら、これをうまく起動させなければ、上書き保存する際にダイアログで確認が入ってしまい処理が途中で止まってしまうのです。
目的の処理では、一連のながれを想定しておりますので、なんとしてもダイアログによる中断は挟みたくありません。
質問事項
さて、長くなってしまい恐縮ですが、今回お伺いしたいことは、「outlook側のvbaで開いたエクセルファイルを、ダイアログ非表示で上書き保存する場合、どのようにすればよいのでしょうか。」という内容になります。
ネットでしらべてもteratail殿の過去の質問を確認しても、対応方法が見つかりませんでした。
何卒ご教示のほどお願いいたします。
コード:呼び出し先
'outlookにて"日報"という表題のメールを受信した際に、「Call OpenSpecificExcelWorkbook関数」を呼び出します。 Private Sub Application_NewMailEx(ByVal EntryIDCollection As String) Dim objId As Object Dim myNamespace As Outlook.NameSpace Set myNamespace = GetNamespace("MAPI") Set objId = myNamespace.GetItemFromID(EntryIDCollection) If InStr(objId.Subject, "日報") Then Call OpenSpecificExcelWorkbook End If End Sub
コード:呼び出し元
'新商品売価設定.xlsm"ファイルを開き、保存して閉じます。 Public Function OpenSpecificExcelWorkbook() Dim xExcelFile As String Dim xExcelApp As Excel.Application Dim xWb As Excel.Workbook xExcelFile = "C:\Users\Documents\新商品売価設定.xlsm" Set xExcelApp = CreateObject("Excel.Application") Set xWb = xExcelApp.Workbooks.Open(xExcelFile) xExcelApp.Visible = True Application.DisplayAlerts = False '←★①こちらが、エラーになります。 xWb.Save DoEvents xWb.Close saveChanges:=False Application.DisplayAlerts = True End Function
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/24 05:31