質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Outlook

Microsoft OutlookはMicrosoft Officeの一部として組み込まれている、のユーザー管理とメーラーの機能を持ち合わせたソフトウェアです。

Q&A

1回答

3314閲覧

エクセルで複数人へのアウトルック予定表反映方法について

gdngnd

総合スコア0

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Outlook

Microsoft OutlookはMicrosoft Officeの一部として組み込まれている、のユーザー管理とメーラーの機能を持ち合わせたソフトウェアです。

0グッド

0クリップ

投稿2022/04/16 08:56

編集2022/04/16 08:59

エクセルでアウトルックの予定表へ反映させるために下記のVBAを実行しています。
その際、自分以外の他人のアウトルック予定表にも同じものを反映させるためにはどのような処理が必要でしょうか。

'Outlook用の定義 Dim olApp As Outlook.Application Dim olNamespace As Outlook.Namespace Dim olFolder As Folder Dim olConItems As Outlook.Items Dim olItem As AppointmentItem Dim checkFlg As Long '重複チェックフラグ初期値設定 checkFlg = 0 'Excel用の定義 Dim wbBook As Workbook Dim wsSheet As Worksheet Dim lnContactCount As Long 'スクリーンの更新は行われません。 Application.ScreenUpdating = False 'Excelのブックとワークシートのオブジェクトを設定します。 Set wbBook = ThisWorkbook Set wsSheet = wbBook.Worksheets(1) wsSheet.Activate 'Outlookオブジェクトを設定し、MAPI名前空間を介してOutlookの予定表を取得します。 Set olApp = New Outlook.Application Set olNamespace = olApp.GetNamespace("MAPI") Set olFolder = olNamespace.GetDefaultFolder(olFolderCalendar) Set olConItems = olFolder.Items '取得結果を記述する行番号を指定します。2行目のセルから開始されることになります。 lnContactCount = 2 Dim rc As Integer rc = MsgBox("予定表へ登録しますか?", vbYesNo + vbQuestion, "確認") If rc = vbYes Then '予定表一覧の件数分繰り返す。 For i = lnContactCount To Cells(1, 1).End(xlDown).Row Set olItem = olApp.CreateItem(olAppointmentItem) With olItem .RequiredAttendees = Cells(i, 1) .OptionalAttendees = Cells(i, 2) .Subject = Cells(i, 3) .Body = Cells(i, 4) .Start = Cells(i, 5) .End = Format(Cells(i, 6), "yyyy/mm/dd hh:mm:ss") .Body = Format(Cells(i, 7), "yyyy/mm/dd hh:mm:ss") .Body = Cells(i, 8) '重複チェック For Each olItemBefor In olConItems If TypeName(olItemBefor) = "AppointmentItem" Then '登録されている予定表の件名と開始日時が一致していたらフラグを1にする If olItemBefor.Subject = .Subject And olItemBefor.Start = .Start Then checkFlg = 1 End If End If Next If checkFlg <> 1 Then 'ここで保存 olItem.Save End If End With '重複フラグリセット checkFlg = 0 Next Else MsgBox "処理を中断します" End If 'Null out the variables. Set olItem = Nothing Set olApp = Nothing 'Turn screen updating back on. Application.ScreenUpdating = True MsgBox "Outlook予定表の登録が完了しました!", vbInformation

End Sub

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2022/04/16 09:11

VBA OUTLOOK スケジュール登録 で調べたら「他人のOutLook予定表を」 というのが出てきますが、そのように調べたり試したりされましたか? (古い情報で適用できなかったというのでしたらその旨も記載してほしい)
gdngnd

2022/04/16 09:14

試しましたが、「 Set olFolder = olNamespace.GetSharedDefaultFolder(recOther, olFolderCalendar)」でエラーが出たため、できませんでした。
m.ts10806

2022/04/16 10:00

どう書いてどういうエラーが出たかによると思います。 コピペだけでは動かないでしょうし、Officeのバージョンとどのエディションかによると思います
guest

回答1

0

Exchangeサーバー環境で他人の予定表に書き込むアクセス権があれば、他人の予定表フォルダーは以下のようにして取得できます。

VBA

1Dim olRec As Outlook.Recipient 2Set olRec = olNamespace.CreateRecipient("メールアドレス") 3Set olFolder = olNamespace.GetSharedDefaultFolder( olRec, olFolderCalendar )

こうして取得した予定表フォルダーへの書き込みは自分の予定表と同様に行えます。
書き込み権限がないのであれば、会議出席依頼として送信する必要があります。
会議出席依頼の送信方法については以下の URL が参考になります。
https://docs.microsoft.com/ja-jp/office/vba/outlook/how-to/items-folders-and-stores/create-an-appointment-as-a-meeting-on-the-calendar

投稿2022/04/21 06:52

millefeuille

総合スコア221

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問