Excel (VBA)

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

 
(Windows 10 Pro : Excel 2013)
Excel VBAから代理人アクセスでのOutlook会議案内
投稿日時: 19/04/22 15:10:10
投稿者: 真下

質問させてください
 
やりたいこと
@Excelで作成した年間会議カレンダーから出席者へOutlookを使用して会議案内を送信
Aその際の差し出し人は自分自身ではなく、出席者から代理人アクセスを付与されたアドレスから送信
 
会社役員への会議案内を秘書が行う際に、秘書自身のスケジュールには入れないよう代理人アクセス件のある共通アドレスから発信したいのです。
 
Outlook上で手動ではできます
また、上記@はすでに実現できています。(自分自身が差出人)
Aが実現できていません。
 
@はざっくり以下のようなコードです
    Dim olkApp As Outlook.Application
    Dim objAppt As Outlook.AppointmentItem
  
    Set olkApp = CreateObject("Outlook.Application")
    Set objAppt = olkApp.CreateItem(olAppointmentItem)
 
    With objAppt
        .Display
        .Start = "2020-01-01 09:00:00"
        .End = "2020-01-01 10:00:00"
        .Subject = "社長ミーティング"
        .MeetingStatus = olMeeting
        .ResponseRequested = False '返信不要
        Dim objRec As Recipient
        Set objRec = .Recipients.Add("会議室アドレス")
        objRec.Type = olRequired
        .Recipients.ResolveAll
        .Display
        .Send
    End With
 
    Set objRec = Nothing
    Set olkApp = Nothing
    Set objAppt = Nothing
 
ご指導、よろしくおねがいします

回答
投稿日時: 19/04/22 16:04:48
投稿者: WinArrow
投稿者のウェブサイトに移動

質問の内容から、ExcelVBAではなく
OutlookVBAの範疇かと・・・
 
↓が参考になるかな?
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14179931979?__ysp=b3V0bG9va3ZiYSBmcm9tIOWkieabtA%3D%3D

投稿日時: 19/04/22 17:24:02
投稿者: 真下

WinArrowさん、回答ありがとうございました。
実現したいのはExcel VBAなのでこちらに質問させていただきました。
(このサイトのOutlookの方はどなたも動いていないようでした)
 
教えていただいたサイトを見ましたが、それはメールの差出人を変更する方法でした。
Outlookのメール差出人を変更する方法は理解しているのですが、会議案内は全然違うようです。
差出人を変更する機能はなく、代理アクセス権を使って送信することになるのですが、これをマクロに実装することができなくて困っております。
 
引き続きご意見等ありましたらよろしくおねがいします。

回答
投稿日時: 19/04/22 18:35:53
投稿者: sk

引用:
やりたいこと
@Excelで作成した年間会議カレンダーから出席者へOutlookを使用して会議案内を送信
Aその際の差し出し人は自分自身ではなく、出席者から代理人アクセスを付与されたアドレスから送信

引用:
Outlookのメール差出人を変更する方法は理解しているのですが、会議案内は全然違うようです。
差出人を変更する機能はなく、代理アクセス権を使って送信することになるのですが

「 Exchange を使う」という前提に触れないと
何のことだか伝わりにくいのではないでしょうか。

投稿日時: 19/04/22 18:42:09
投稿者: 真下

skさん、ご指摘ありがとうございます。
情報不足でした。

投稿日時: 19/04/23 09:42:01
投稿者: 真下

WinArrowさん
コメントありがとうございます。
 
示して頂いたリンク先の内容です。
これをマクロで実現する方法を模索しております。
 
よろしくおねがいします

回答
投稿日時: 19/04/23 10:05:55
投稿者: きぬあさ
投稿者のウェブサイトに移動

こんにちは。
 
GetSharedDefaultFolderメソッド( https://docs.microsoft.com/ja-jp/office/vba/api/outlook.namespace.getshareddefaultfolder )でフォルダを切り替えてからアイテムを作成すれば良いかと思います。
 

Public Sub Sample()
  Dim rp As Outlook.Recipient
  Dim itm As Outlook.AppointmentItem
  
  Set rp = Application.Session.CreateRecipient([代理人アクセスを付与されたアドレスや名前])
  rp.Resolve
  If rp.Resolved Then
    With Application.Session.GetSharedDefaultFolder(rp, olFolderCalendar)
      Set itm = .Items.Add(Type:=olAppointmentItem)
      With itm
        .Subject = "テスト予定"
        .Body = "予定本文"
        .Recipients.Add "[宛先]" '宛先追加
        .MeetingStatus = olMeeting
        .ResponseRequested = False
        .Send
      End With
    End With
  End If
End Sub

 
全然関係ないのですが、ここで回答するのは久しぶりなのでパスワードをすっかりわすれていました・・・😅💦

投稿日時: 19/04/25 20:11:29
投稿者: 真下

きぬあささん
回答ありがとうございました。
 
本日まで出張のためトライができませんでした。
明日、早速トライしてみます

投稿日時: 19/04/29 13:40:04
投稿者: 真下

きぬあささん
送っていただいたマクロそのままではExcel上でいろいろとエラーが出るので修正して最後まで実行できるようになったのですが、Outlook上で何も起きません。
もう少し調べてみます

投稿日時: 19/05/08 17:44:38
投稿者: 真下

皆さん
いろいろとアドバイスいただきありがとうございました
きぬあささんに教えていただいた方法を小修正することで解決できました。