Outlookの自分以外の予定表でスケジュール共有を行うことは多いかと思います。
そんな中で困ることは、
・VBAを使いOutlookの自分以外の予定表から会議出席依頼をする方法がわからない
ですね。
他人が共有している予定の一覧を取得した上、
さらにExcelの一覧表からOutlookの予定表を登録、編集できるととても便利ですよね。
今回は、
・代理人として会議出席依頼を送信する方法
についてまとめます!
もくじ
Excelへ取り込んだ予定表の一覧から、他人のOutlook予定表を登録、編集する流れ
今回のVBAの実装先は、Excelブック側となります。
前回Excelブック側に取り込んだ予定表を使いますので、
【Excel VBA】Outlookの他人の予定表をExcelワークシートへ取り込む
①②が前回分、今回は③④の部分になります。
①Excelブック(VBA) → この人の予定一覧ちょうだい → Outlook
②Excelブック ← 予定一覧を出すよ ← Outlook
③Excelブック(VBA) → この人のこのスケジュールを更新してね → Outlook
④Excelブック ← スケジュールを更新したよ ← Outlook
次ではVBAの実装方法について説明をします。
Excel VBAからOutlookを操作するための下準備
①まずExcelを起動し、「開発」タブをクリックします。
②VBEの画面が開いたら、メニューから「ツール」>「参照設定」を選択します。
③「Microsoft Outlook XX.X Object Library」を探してチェックボックスにチェックし「OK」をクリックします。
以上です。
サンプルの他人の予定一覧を準備する
続いてスケジュールの変更をしたい他人の予定一覧をExcelブック側に用意します。
前回Excelブック側に取り込んだ予定表を使いますので、以下を参照の上用意をしてください。
サンプルでは「hanako@extan.jp」の予定表を指定しています。
2つは単体の予定で、3つ目は週次の定期的な予定となります。
件名 | 場所 | 開始日時 | 定期的な予定 |
Test1 | Microsoft Teams 会議 | 2020/9/1 9:30 | なし |
Test2 | Microsoft Teams 会議 | 2020/9/2 10:00 | なし |
Test3 定例 | Microsoft Teams 会議 | 2020/9/3 10:00 | あり、週次開催 |
Excel側の予定表一覧です。
なお、今回は定期的な予定は仕様により処理対象から外しています。
ご了承ください。
VBAを実装する
続いてExcelのVisual Basic EditorへVBAを実装します。
今回のVBAはExcelブックへ取り込んだ他人の予定表からOutlookの予定表へ変更、新規追加できるようにしたものです。
実装にあたり、変更頂きたい箇所は2点です。
・誰の予定表を取得するか、メールアドレスを指定する
対象予定表のアドレスを指定してください。
strAddress = “hanako@extan.jp”
・取得する期間を指定する
対象予定表の抽出期間を指定します。※変更する場合は以下の日付を変更してください。
strStart = Format(“2020/09/1”, “yyyy/mm/dd”) ‘抽出するスケジュールの開始日を指定
strEnd = Format(“2020/09/30”, “yyyy/mm/dd”) ‘抽出するスケジュールの終了日を指定
Sub 他人のOutlookの予定表へ登録する()
'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
'操作対象の他人のアドレスを指定
Dim strAddress As String
strAddress = "hanako@extan.jp"
'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 recOther = olNamespace.CreateRecipient(strAddress)
Set olFolder = olNamespace.GetSharedDefaultFolder(recOther, olFolderCalendar)
Set olConItems = olFolder.Items
'自分自身のアイテムを更新する場合は以下をアクティブにしてください。
'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 = olConItems.Add()
'重複チェック&更新処理
For Each olItemBefor In olConItems
If TypeName(olItemBefor) = "AppointmentItem" Then
'ExcelI列のEntryIDと登録されているEntryIDが一致していたら該当予定表を更新します。
If olItemBefor.EntryID = Cells(i, 9) Then
'比較用に一時的に作成
With olItem
.Subject = Cells(i, 1)
.Start = Format(Cells(i, 3), "yyyy/mm/dd hh:mm:ss")
.End = Format(Cells(i, 4), "yyyy/mm/dd hh:mm:ss")
End With
'重複フラグ1をセット
checkFlg = 1
'登録されている予定表の件名と開始日時及び終了日時が一致していなかった場合のみ更新します。
'※更新の条件はご都合に応じて変更してください。この条件が無い場合はExcelの予定表すべて更新されますので、ご注意ください。
If olItemBefor.Subject = olItem.Subject And olItemBefor.Start = olItem.Start And olItemBefor.End = olItem.End Then
Else
'定期的な予定でない場合更新します。
If Cells(i, 10) = "False" Then
With olItemBefor
.Subject = Cells(i, 1)
.Location = Cells(i, 2)
.Start = Format(Cells(i, 3), "yyyy/mm/dd hh:mm:ss")
.End = Format(Cells(i, 4), "yyyy/mm/dd hh:mm:ss")
.Body = Cells(i, 5)
.RequiredAttendees = Cells(i, 6)
.OptionalAttendees = Cells(i, 7)
.Save
End With
End If
End If
'Null out the variables.
Set olItem = Nothing
End If
End If
Next
If checkFlg <> 1 Then
'ExcelI列のEntryIDと登録されているEntryIDが一致していなかったら新規登録します。
With olItem
.Subject = Cells(i, 1)
.Location = Cells(i, 2)
.Start = Format(Cells(i, 3), "yyyy/mm/dd hh:mm:ss")
.End = Format(Cells(i, 4), "yyyy/mm/dd hh:mm:ss")
.Body = Cells(i, 5)
.RequiredAttendees = Cells(i, 6)
.OptionalAttendees = Cells(i, 7)
.Save
End With
'ExcelI列へ発行されたEntryIDを書き込み
Cells(i, 9) = olItem.EntryID
End If
'重複フラグリセット
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
実装手順は以下の通りです。今回はExcel側にVBAを実装します。
①Excelを新規に開き、「開発」タブをクリックし、「VisualBasic」をクリックします。
もしくはショートカットキー「Alt」+「F11」でもOKです。
②標準モジュールを追加します。
左ペインのVBAProjectを右クリックし、「挿入」、「標準モジュール」を選択します。
③右ペインのウインドウに上記のVBAを入力します。
こちらで完了です。
VBAを実行する
ExcelからOutlook予定表の単体の予定を変更する
①サンプルではExcel側の件名「Test1」の予定の開始日時を以下のように変更しました。
変更前
件名 | 場所 | 開始日時 | 定期的な予定 |
Test1 | Microsoft Teams 会議 | 2020/9/1 9:30 | FALSE |
変更後
件名 | 場所 | 開始日時 | 定期的な予定 |
Test1 | Microsoft Teams 会議 | 2020/9/1 10:00 | FALSE |
では早速VBAの実行をしてみましょう。
①「開発」タブの「VBA」をクリックし「他人のOutlookの予定表へ登録する」を選択し、「実行」をクリックします。
②「Outlook予定表の登録が完了しました!」が表示され、
Outlook予定表が変更されましたね。
変更前
変更後
ExcelからOutlook予定表へ予定を新規追加する
①サンプルではExcel側の件名「Test4」で「EntryID」が空の予定を追記しました。
追加
件名 | 開始日時 | 終了日時 | EntryID | 定期的な予定 |
Test4 | 2020/9/4 10:00 | 2020/9/4 11:30 | FALSE |
では早速VBAの実行をしてみましょう。
②「開発」タブの「VBA」をクリックし「他人のOutlookの予定表へ登録する」を選択し、「実行」をクリックします。
③「Outlook予定表の登録が完了しました!」が表示され、
Outlook予定表が変更されました。
変更前
変更後
ExcelからOutlook予定表の複数の予定を変更する
①サンプルではExcel側の件名「Test1」、「Test2」の予定の開始日時を以下のように変更しました。
変更前
件名 | 開始日時 | 終了日時 | 定期的な予定 |
Test1 | 2020/9/1 10:00 | 2020/9/1 10:30 | FALSE |
Test2 | 2020/9/2 10:00 | 2020/9/1 10:30 | FALSE |
Test4 | 2020/9/4 10:00 | 2020/9/4 10:30 | FALSE |
変更後
件名 | 開始日時 | 終了日時 | 定期的な予定 |
Test1 | 2020/9/1 10:00 | 2020/9/1 11:30 | FALSE |
Test2 | 2020/9/2 10:00 | 2020/9/2 11:30 | FALSE |
Test4 | 2020/9/4 10:00 | 2020/9/4 11:30 | FALSE |
VBAの実行をしてみましょう。
②「開発」タブの「VBA」をクリックし「他人のOutlookの予定表へ登録する」を選択し、「実行」をクリックします。
②「Outlook予定表の登録が完了しました!」が表示され、
Outlook予定表が変更されました。
変更前
変更後
ExcelからOutlook予定表の予定の件名を変更する
①サンプルではExcel側の件名「Test1」の件名を「Test1 変更」へ変更しました。
件名 | 開始日時 | 終了日時 | 定期的な予定 |
Test1 変更 | 2020/9/1 10:00 | 2020/9/1 11:30 | FALSE |
VBAの実行をしてみましょう。
②「開発」タブの「VBA」をクリックし「他人のOutlookの予定表へ登録する」を選択し、「実行」をクリックします。
③「Outlook予定表の登録が完了しました!」が表示され、
Outlook予定表が変更されましたね!
Outlookの予定表を編集できること
Outlookの予定表を編集できることはまだあります。
会議場所の変更
サンプルでは空欄ですが、会議場所の変更が行うことができます。TeamsやSkypeなどオンライン会議の場合はOutlook側から指定をするようにお願いします。
予定の本文の変更
本文の内容を変更することができます。
ただし、注意いただきたい点はText形式になってしまうことです。
ハイパーリンクなどHTML形式で保存している場合はText形式に変更されますので、無効化をするようにお願いします。
なお、無効化する場合は以下を
コメントアウト
してください。
会議出席者の変更
必須、任意出席者の変更をすることができます。
複数入れる場合は「;」で区切るようにしてください。
今回のVBAについて説明
Outlookオブジェクトを設定し、MAPI名前空間を介してOutlookの予定表を取得します。
Set olNamespace = olApp.GetNamespace(“MAPI”)
今回追加したところは、他人のオブジェクトを指定し取得する処理です。
strAddressは上記で設定した他人のアドレスが格納されています。
取得した他人のオブジェクトの内、予定表のみ絞り込み再取得します。
予定表のリストはolFolderCalendarというメンバーに格納されていますのでそれを指定しています。
自分自身のアイテムを更新する場合は以下をアクティブにしてください。
‘Set olFolder = olNamespace.GetDefaultFolder(olFolderCalendar)
‘Set olConItems = olFolder.Items
コードではolItemオブジェクトのタイプ名が”AppointmentItem”だった場合に処理を進めるようにしています。
ExcelI列のEntryIDと登録されているEntryIDが一致していたら該当予定表を更新します。
登録されている予定表の件名と開始日時及び終了日時が一致していなかった場合のみ更新します。
※更新の条件はご都合に応じて変更してください。この条件が無い場合はExcelの予定表すべて更新されますので、ご注意ください。
<strong>If olItemBefor.Subject = olItem.Subject And olItemBefor.Start = olItem.Start And olItemBefor.End = olItem.End Then</strong>
定期的な予定でない場合変更します。
<strong>If Cells(i, 10) = "False" Then</strong>
Excel側の値を読み込み、予定オブジェクトにセットします。
.Location = Cells(i, 2)
.Start = Format(Cells(i, 3), “yyyy/mm/dd hh:mm:ss”)
.End = Format(Cells(i, 4), “yyyy/mm/dd hh:mm:ss”)
.Body = Cells(i, 5)
.RequiredAttendees = Cells(i, 6)
.OptionalAttendees = Cells(i, 7)
場所:Location
開始日時:Start
終了日時:End
予定の本文:Body
予約者:Organizer
必須出席者:RequiredAttendees
任意出席者:OptionalAttendees
ここで保存されます。
ExcelI列のEntryIDと登録されているEntryIDが一致していなかったら新規登録します。
新規の場合は発行されたEntryIDをExcelシートのI列へ書き込みます。
代理人として会議出席依頼を送信する場合の設定
現在予定表へ会議の予定アイテムを保存する設定となっています。
代理人として会議出席者へ出席依頼を送信する場合は、以下コードの
を
.Send
へ変更します。
MeetingStatusプロパティの設定値は以下の通りです。
1及び「olMeeting」を指定すると、会議メールとして扱われます。
名前 | 値 | 説明 |
---|---|---|
olMeeting | 1 | 予定が組まれた状態。 |
olMeetingCanceled | 5 | 予定が取り消された状態。 |
olMeetingReceived | 3 | 参加要請が受信された状態。 |
olMeetingReceivedAndCanceled | 7 | 予定されていた会議が取り消されたが、ユーザーの予定表にはまだ表示されている状態。 |
olNonMeeting | 0 | 参加者なしで予定が組まれた状態。 予定表に休日を設定する際、この状態が生じることがあります。 |
参考:https://docs.microsoft.com/ja-jp/office/vba/api/outlook.olmeetingstatus
また、代理人送信できるよう、
実行アカウントに対して編集以上のアクセス権の許可をするようにしてください。
他人の予定表の追加した予定表を指定し登録、編集する
他人の予定表の中で追加した予定表を指定して登録、編集することもできます。
コードの、
へ
を追加します。
例えば、指定アカウントの追加予定表が「追加予定表1」である場合は、
となります。
また、実行アカウントに対して編集以上のアクセス権の許可をするようにしてください。
定期的な予定を変更しようとするとエラーとなる理由
定期的な予定を変更しようとすると、
「オブジェクトはこのメソッドをサポートしません。」
とメッセージが表示され、エラーとなります。
定期的な予定を更新するとエラーとなる理由は
定期的な予定は別のレコードで管理されているからです。
定期的でない予定は1レコードづつ開始日、終了日が登録されていますが、
〇〇日から週に1回などと指定する定期的な予定はパターン登録といい、それぞれの予定の開始日、終了日はパターンから算出したものなのです。
なので、定期的な予定を変更する場合はパターン登録側のレコードを変更する必要があるという訳です。
こちらは別記事で紹介予定ですのでしばらくお待ちください。
さいごに
いかがでしょうか。
今回は、
・代理人として会議出席依頼を送信する方法
についてまとめました。
今回のVBAで他人の予定表を効率よく把握しながら編集もできるので、ぜひ活用いただければと思います。
お返事が遅くなってしまい申し訳ありません。
追加でご教示いただいた内容でチャレンジした結果、VBAを実装させることができました!
ありがとうございました。
実現できたようでよかったです。
また何かございましたらご連絡ください。
ご教示ありがとうございます。
条件式を変更して再度VBAを実装してみたのですが、会議場所も予定の本文も変更されませんでした。
何か他の問題があるのでしょうか。
度々申し訳ありませんが、ご教示お願いいたします。
ご連絡ありがとうございます。
会議場所も予定の本文も変更されない件につきまして、失礼しました。
以下変更が漏れておりましたので追加頂きたくお願いいたします。
■変更前
‘比較用に一時的に作成
With olItem
.Subject = Cells(i, 1)
.Start = Format(Cells(i, 3), “yyyy/mm/dd hh:mm:ss”)
.End = Format(Cells(i, 4), “yyyy/mm/dd hh:mm:ss”)
End With
■変更後
‘比較用に一時的に作成
With olItem
.Subject = Cells(i, 1)
.Start = Format(Cells(i, 3), “yyyy/mm/dd hh:mm:ss”)
.End = Format(Cells(i, 4), “yyyy/mm/dd hh:mm:ss”)
.Location = Cells(i, 2)
.Body = Cells(i, 5)
End With
また、Excel側に記載した登録対象の行にEntryIDが含まれているかご確認いただけますでしょうか。
EntryIDがOutlook側の照合キーになっていまして、これがないと新規登録扱いとなります。
よろしくお願いいたします。
夜分遅くに失礼いたします。
仕事でこちらのVBAを使用させていただいているのですが、場所の変更と予定の本文の変更がどうしてもできません。何か追加でVBAを挿入しなければいけないのでしょうか。件名や開始日時、終了日時は変更ができます。お忙しいところ恐れ入りますが、お手隙の際にご教示お願いいたします。
いつもご利用ありがとうございます。
件名や開始日時、終了日時は変更できるが、場所の変更と予定の本文の変更ができない件につきまして、
現行の仕様では登録されている予定表の件名と開始日時及び終了日時が一致していなかった場合のみ更新しますので、以下の条件式を変更頂きたくお願いいたします。
■変更前
If olItemBefor.Subject = olItem.Subject And olItemBefor.Start = olItem.Start And olItemBefor.End = olItem.End Then
■変更後
If olItemBefor.Subject = olItem.Subject And olItemBefor.Start = olItem.Start And olItemBefor.End = olItem.End And olItemBefor.Location = olItem.Location And olItemBefor.Body = olItem.Body Then
初めまして。
今回、こちらのサイトをとても参考にさせていただいてるのですが、質問があります。
予定内容に分類項目を選択する事と資料の添付は可能でしょうか。
分類項目は指定したアドレスで使用している初期の名称ではなく「会議」などの場合の対応をお聞きしたいです。
いつもご利用ありがとうございます。
ご質問につきまして、いずれも対応可能としております。
別記事にてまとめておりますので、ご参考いただければと存じます。
・予定内容に分類項目を選択する
https://extan.jp/?p=3636#%EF%BC%9C%E8%BF%BD%E5%8A%A0%EF%BC%9E%E4%BC%9A%E8%AD%B0%E5%87%BA%E5%B8%AD%E4%BE%9D%E9%A0%BC%E3%81%AB%E5%88%86%E9%A1%9E%E9%A0%85%E7%9B%AE%E3%81%A7%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B
※「会議」などオリジナルの値の場合はあらかじめOutlook側に追加設定した上で検証いただきたくお願いいたします。
・資料の添付
https://extan.jp/?p=3636#%EF%BC%9C%E8%BF%BD%E5%8A%A0%EF%BC%9E%E4%BC%9A%E8%AD%B0%E5%87%BA%E5%B8%AD%E4%BE%9D%E9%A0%BC%E3%81%AB%E8%A4%87%E6%95%B0%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E6%B7%BB%E4%BB%98%E3%81%99%E3%82%8B
いつも大変ありがたく拝見しております。
こちらのVBAを利用した予定の登録について、最初から「仮の予定」として登録させるにはどうすればいいでしょうか?よろしくお願いします
いつもご利用ありがとうございます。
「仮の予定」として登録する方法につきまして、
BusyStatusプロパティに1もしくは「olTentative」を指定することで可能となります。
詳細については以下の記事に記載がありますので、
よろしければご参考いただければと存じます。
https://extan.jp/?p=1693&page=2#%E3%80%90%E8%BF%BD%E5%8A%A0%E3%80%91%E4%BA%88%E5%AE%9A%E8%A1%A8%E3%81%AE%E5%85%AC%E9%96%8B%E6%96%B9%E6%B3%95%E3%82%92%E6%8C%87%E5%AE%9A%E3%81%99%E3%82%8BVBA
別のページにコメントしてしまったので再掲載させていただきます。
↓
便利なものを公開して下さりありがとうございます。
他人のOutlookの予定表への登録を行いたいのですが、
同じ予定でも例えば 1/5はAさん、1/10はBさんというように登録したい場合、操作対象の他人のアドレス指定を該当者分全て登録すればいいのでしょうか?
また、アドレスの区切り方法などがあれば教えて頂けると幸いです。
いつもご利用ありがとうございます。
複数ユーザーへ同じ予定を登録する方法につきまして、公開しているVBAでは1ユーザーごとの登録処理となっておりますので、
アドレス登録と登録処理を該当者分繰り返す形となります。
具体的には以下の通りとなります。
1.登録したい予定をExcelへ記述する。(ユーザーごとに日付を変更する)
2.以下アドレス部を登録したいユーザーのものへ変更する。
strAddress = “hanako@extan.jp”
3.VBAを実行し、予定を登録する。
これを該当者分繰り返します。
登録対象者が多く1ユーザーごとに手動でVBA実行、登録する部分を自動的に処理したい場合は、
やはり作り込みが必要になります。
イメージとしては
Excel側の予定一覧へ予定登録者欄を追加「;」区切りなどでアドレスを入力し、VBA側でその欄を参照、区切り文字で分割し、
アドレス件数分上記1~3をForEachなどで繰り返す内容になるかと存じます。
※ご希望の場合はサンプルのVBAコードを用意いたします。
別の方法としましては、少々体裁が変わりますが、会議出席依頼を送信する方法もおすすめです。
Aさん、Bさんのアドレスを必須出席者へ「;」区切りで記載し、実行後、予定が送信/登録されます。
詳細は以下をご参照ください。
https://extan.jp/?p=3636#VBA%E3%82%92%E5%AE%9F%E8%A1%8C%E3%81%97%E3%80%81%E4%BC%9A%E8%AD%B0%E5%87%BA%E5%B8%AD%E4%BE%9D%E9%A0%BC%E3%82%92%E9%80%81%E4%BF%A1%E3%81%99%E3%82%8B
よろしくお願いいたします。
早速のご回答ありがとうございます。
追加した予定表は対象外でしたか…残念です。
一旦 既定の予定表へ取込んだ後に、
手動で追加した予定表へ移動させる方法で対処いたします。
また、記事に追加されていないか、寄らせて頂きます。
開始日時と終了日時を
日と時に分けて エクスポートやインポートさせたいのですが
可能でしょうか?
可能な場合
記述をどのようにしたらよいのでしょうか?
よろしくお願いいたします。
開始日時と終了日時を日と時に分ける件ですが、可能となります。
開始日時と終了日時の形式は“yyyy/mm/dd hh:mm:ss”ですので、エクスポートの時に
日のみであれば“dd”、時であれば”hh”と形式を指定してあげるだけです。
例:
Format(.Start, “dd”)
Format(.Start, “hh:mm”)
日と時を分けたいということですので、それぞれの値を別々のセルへ代入していきます。
例:
Cells(行番号, 列番号).Value = Format(.Start, “dd”)
Cells(行番号, 列番号).Value = Format(.Start, “hh:mm”)
なお、インポート(登録、編集)時には開始日時と終了日時を“yyyy/mm/dd hh:mm:ss”の形式にする必要がありますので、
分けた日付の値を合成し上記形式に変換するようにお願いします。
始めまして、よろしくお願いいたします。
@outlook.comに各自アカウント作成しています。
例えば hanako@outlook.com とします。
Office365 のデスクトップアプリ Outlookに設定しております。
個人用の予定表
予定表_ hanako@outlook.comに追加ではなく
予定表_ hanako@outlook.comで右クリックして作成した
新しい予定表 花子 への追加をしたいのですが
可能でしょうか?
strAddress = “hanako@extan.jp”
↓
strAddress = “花子”
に修正してみましたが、下記のエラーがでました。
***********************************
実行時エラー ‘-2147352567 (80020009)’:
Outlook で認識できない名前があります。
***********************************
アドバイス頂ければ幸いです。
よろしくお願いいたします。
いつもご利用ありがとうございます。
追加した予定表の記事につきまして追記いたしましたので、
よろしければご参考頂ければと存じます。
自分のアカウント以外から他人の追加した予定表へ編集する場合
https://extan.jp/?p=2275#%E4%BB%96%E4%BA%BA%E3%81%AE%E4%BA%88%E5%AE%9A%E8%A1%A8%E3%81%AE%E8%BF%BD%E5%8A%A0%E3%81%97%E3%81%9F%E4%BA%88%E5%AE%9A%E8%A1%A8%E3%82%92%E6%8C%87%E5%AE%9A%E3%81%97%E7%99%BB%E9%8C%B2%E3%80%81%E7%B7%A8%E9%9B%86%E3%81%99%E3%82%8B
自分のアカウントに追加した予定表を編集する場合
https://extan.jp/?p=3341
いつもご利用ありがとうございます。
hanako@outlook.comアカウントに追加した予定表「花子」が取り込められるかについてのご質問ですが、
原則として既定の予定表のみが対象となっていますので、追加した予定表は対象外となります。
ざっと追加した予定表を指定する方法がないか確認しましたが、有力な情報は見当たりませんでしたので、
もしありましたら記事に追記したいと思います。
よろしくお願いいたします。
こちらのVBAを一部利用して他人の予定表へ予定が入ってない状態から新規に入力しようとしているのですが、実行すると自分の予定表に反映されてしまいます。原因として考えられることは何がありますでしょうか。
Dim strAddress As String
strAddress = “参照したい先のアドレス”
Set olApp = New Outlook.Application
Set olNamespace = olApp.GetNamespace(“MAPI”)
Set recOther = olNamespace.CreateRecipient(strAddress)
Set olFolder = olNamespace.GetSharedDefaultFolder(recOther, olFolderCalendar)
Set olConItems = olFolder.Items
ここは入力しており、動作自体は問題なくできております。
ご教示いただけましたら幸いです。
いつもご利用ありがとうございます。
対象者の既に入っている予定の変更はできるが、新規の場合は自分の予定表へ更新されてしまうという状況でよろしいでしょうか。
確認頂きたいことは、以下の通りです。
・strAddress = “参照したい先のアドレス”
こちらに予定表を変更したいアドレスが入力されているか確認をお願いします。
・貴殿のアカウントに対し、他人の予定表への書き込み権限が付与されているか確認をお願いします。
・以下のコメントが外れていないか、また一旦行ごと削除して確認をお願いします。
‘自分自身のアイテムを更新する場合は以下をアクティブにしてください。
‘Set olFolder = olNamespace.GetDefaultFolder(olFolderCalendar)
‘Set olConItems = olFolder.Items
よろしくお願いいたします。
お世話になっております。
あれから試行錯誤した結果、権限の問題で書き込みができなかったことが判明しました。
これで作業が非常に楽になりました。ありがとうございました。
いつもご利用ありがとうございます。
使えるようになったようでよかったです。
#私も以前、同様の権限の問題でつまづいていました…
今後ともよろしくお願いいたします。