Access (VBA)

Access VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Access 2016)
AccessからOutlookの操作
投稿日時: 19/07/15 20:47:49
投稿者: p_ko

操作されるOutlookにはあらかじめメール送信時に以下のようなVbYesnoのMsgboxが出現するようになっています。
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
Dim rc As Integer
'.
'.
'省略
'
'.
    rc = MsgBox("処理を行いますか?", vbYesNo + vbQuestion, "確認")
    If rc = vbYes Then
        MsgBox "処理を行います"
    Else
        Cancel = True
        Exit Sub ''
    End If
End Sub
 
操作する側(Access)では次のようなコードでメール送信を制御しています。
Sub Test()
  'Outlookオブジェクトの変数宣言
  Dim outlookObj As Outlook.Application
  Set outlookObj = New Outlook.Application
   
  'メール送信用のオブジェクト作成
  Dim mailObj As Outlook.MailItem
  Set mailObj = outlookObj.CreateItem(olMailItem)
  
  'メール送信内容の作成
  With mailObj
    .To = "xxxxxxxxxxxxx@xxxxx.xxx" 'メール宛先"
    .Subject = "新しいメールの件名" 'メール件名
    .Body = "メール本文をここに書くよ。" 'メール本文
    .BodyFormat = olFormatPlain 'メール形式に設定
  End With
  'メール送信
  mailObj.Send
End Sub
 
Outlookが起動していないときはそのまま送れますが、起動しているとMsgboxが出現します。
 
msgboxにYesとAccessから操作してOutlookの送信を実行させたいのですが、どのようなコードが必要になるのでしょうか。
 
どなたか、外部操作を経験された方、またはご存知の方がみえれば、ご教授ください。
 
よろしくお願いします。

回答
投稿日時: 19/07/16 10:39:40
投稿者: Suzu

こんにちは。
 
Outlool自体を使っていないので、回避方法は判りません。
(新しくApplicationを生成しているのに、起動済みApplicationが操作されるのが??
 複数起動が許されていないという事なのかな。。)
 
 
 
メール送信の自動化を行う場合には 別のアプリケーションを使っています。
 
ただ、あくまでも 自動送信用の対処です。
・コード内で、メールサーバー/アカウントの設定を行う必要がある
・履歴が残らない
・そのアドレスに返信を返される事がある
     → → 何かしらの対処をしておかないとメールボックス一杯で送信もできないという事になりかねません
     → → 送信用の専用メールアカウントを用意するなら、対処が必要になる事も
 
上記の前提で良いなら
 
 Outlookを使用するのではなく CDO(Microsoft Collaboration Data Objects)を検討されては如何でしょう。

投稿日時: 19/07/16 14:42:48
投稿者: p_ko

ご回答ありがとうございます。
よくよく考えたらSendで待機している側から操作って理屈上不可能ですね。
outlook側で命令元のアプリを判断するして、自らメッセージを出さないようにした方がよさそうです。