🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
VBA

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

Q&A

1回答

2326閲覧

Excelの予定表をVBAで指定したアカウントのOutlookに送信したい

takao293

総合スコア2

VBA

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

0グッド

0クリップ

投稿2021/03/13 13:56

前提・実現したいこと

現在Excelで職場のスケジュール管理を行っています。

一カ月の予定表を職員それぞれのOutlookのスケジュールに同期させたいのですが、良いやり方が見つからず困っています。職員は主にiPadで業務をしていて、今のところ手動でそれぞれOutlookの予定表に書き込む等しています。一カ月の予定はそれぞれ決まっているのでシフトが出た時点でそれぞれのアドレスに送信できれば便利だと考えています。

VBAは初心者で、ネットで紹介されているコードを幾つか試しましたが上手くいかず、アドバイス頂きたいと存じます。

発生している問題・エラーメッセージ

https://officevba.info/outlookschedule/

こちらのサイトで紹介されているコードを試してみたのですが、VBAを実行したPCのOutlookアカウントに直接予定表が書き込まれてしまい、アカウントを指定して送る意図通りにいきません。

### 該当のソースコード ```ここに言語名を入力 ソースコード

Sub シートからアウトルック予定表入力()

Dim i As Long
Dim oApp 'As Outlook.Application OutlookのApplication オブジェクトを入れる
Dim myNameSpace 'As Outlook.NameSpace
Dim myFolder 'As Outlook.Folder フォルダー指定

Set oApp = CreateObject("Outlook.Application")
Set myNameSpace = oApp.GetNamespace("MAPI")
Set myFolder = myNameSpace.GetDefaultFolder(9) '規定のフォルダー olFolderCalendar=9 指定

myFolder.Display
oApp.ActiveWindow.WindowState = 2 'olNormalWindow=2 (olMaximized=0,olMinimized=1)

Dim aITEM 'As Outlook.AppointmentItem

Dim 行路 As String, 場所 As String
Dim 開始日 As String, 開始時間 As String, 終了日 As String, 終了時間 As String

i = 2
Do Until Cells(i, 1).Value = ""

行路 = Cells(i, 1)
場所 = Cells(i, 2)
開始日 = Cells(i, 3).Text
開始時間 = Cells(i, 4).Text
終了日 = Cells(i, 5).Text
終了時間 = Cells(i, 6).Text

Set aITEM = oApp.CreateItem(1) 'olAppointmentItem=1 1予定・アポを指定
aITEM.Display '編集画面表示

aITEM.Subject = タイトル
aITEM.Body = 場所
aITEM.Location = 内容
aITEM.Start = 開始日 & " " & 開始時間
If 終了日 = "" And 開始日 <> "" Then
終了日 = 開始日
End If
aITEM.End = 終了日 & " " & 終了時間

aITEM.Save
aITEM.Close 0

i = i + 1
Loop

'oApp.Quit
Set myFolder = Nothing
Set myNameSpace = Nothing
Set oApp = Nothing

End Sub

試したこと

https://extan.jp/?p=1693

こちらのサイトのコードも使用してみましたが、日付と時間が同じセルの為
基になるExcelのシートの書式に合わず使えませんでした

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答1

0

こちらなど参考になりますでしょうか。
【Outlook VBA】会議で自分以外の参加者にも予定を送る方法

投稿2021/03/14 01:28

jinoji

総合スコア4592

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

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

takao293

2021/03/14 04:40

ありがとうございます。試してみますが、出来れば質問に記載したソースコードを修正して使用したいと思っています。ご紹介頂いたサイトを参考にして修正してみます。
jinoji

2021/03/14 04:49

aITEM.Save のところを、以下のように修正する感じだと思います。 aITEM.MeetingStatus = olMeeting aITEM.Recipients.Add "参加者@mail.com" aITEM.Send
takao293

2021/03/14 05:24

ありがとうございます。早速修正して実行してみましたが、以下のエラーが出ました。 実行時エラー'440' オブジェクトはこのメソッドをサポートしていません。 修正したコードは以下になります。 Sub シートからアウトルック予定表入力() Dim i As Long Dim oApp 'As Outlook.Application OutlookのApplication オブジェクトを入れる Dim myNameSpace 'As Outlook.NameSpace Dim myFolder 'As Outlook.Folder フォルダー指定 Set oApp = CreateObject("Outlook.Application") Set myNameSpace = oApp.GetNamespace("MAPI") Set myFolder = myNameSpace.GetDefaultFolder(9) '規定のフォルダー olFolderCalendar=9 指定 myFolder.Display oApp.ActiveWindow.WindowState = 2 'olNormalWindow=2 (olMaximized=0,olMinimized=1) Dim aITEM 'As Outlook.AppointmentItem Dim イベント As String, 場所 As String, 開始日 As String Dim 開始時間 As String, 終了日 As String, 終了時間 As String, アドレス As String i = 2 Do Until Cells(i, 1).Value = "" イベント = Cells(i, 1) 場所 = Cells(i, 2) 開始日 = Cells(i, 3).Text 開始時間 = Cells(i, 4).Text 終了日 = Cells(i, 5).Text 終了時間 = Cells(i, 6).Text アドレス = Cells(i, 7).Text Set aITEM = oApp.CreateItem(1) 'olAppointmentItem=1 1予定・アポを指定 aITEM.Display '編集画面表示 aITEM.Subject = イベント aITEM.Body = 場所 aITEM.Start = 開始日 & " " & 開始時間 ⇦ こちらの行にデバックで矢印が入りました If 終了日 = "" And 開始日 <> "" Then 終了日 = 開始日 End If aITEM.End = 終了日 & " " & 終了時間 aITEM.MeetingStatus = olMeeting aITEM.Recipients.Add "アドレス@mail.com" aITEM.Send i = i + 1 Loop 'oApp.Quit Set myFolder = Nothing Set myNameSpace = Nothing Set oApp = Nothing End Sub
jinoji

2021/03/14 05:47

aITEM.MeetingStatus = 1 'olMeeting=1 としても同じですか?
takao293

2021/03/16 10:51

返信遅くなり申し訳ありません!先程試してみましたが同じエラーでした。 Sub シートからアウトルック予定表入力() Dim i As Long Dim oApp 'As Outlook.Application OutlookのApplication オブジェクトを入れる Dim myNameSpace 'As Outlook.NameSpace Dim myFolder 'As Outlook.Folder フォルダー指定 Set oApp = CreateObject("Outlook.Application") Set myNameSpace = oApp.GetNamespace("MAPI") Set myFolder = myNameSpace.GetDefaultFolder(9) '規定のフォルダー olFolderCalendar=9 指定 myFolder.Display oApp.ActiveWindow.WindowState = 2 'olNormalWindow=2 (olMaximized=0,olMinimized=1) Dim aITEM 'As Outlook.AppointmentItem Dim イベント As String, 場所 As String, 開始日 As String Dim 開始時間 As String, 終了日 As String, 終了時間 As String, アドレス As String i = 2 Do Until Cells(i, 1).Value = "" イベント = Cells(i, 1) 場所 = Cells(i, 2) 開始日 = Cells(i, 3).Text 開始時間 = Cells(i, 4).Text 終了日 = Cells(i, 5).Text 終了時間 = Cells(i, 6).Text アドレス = Cells(i, 7).Text Set aITEM = oApp.CreateItem(1) 'olAppointmentItem=1 1予定・アポを指定 aITEM.Display '編集画面表示 aITEM.Subject = イベント aITEM.Body = 場所 aITEM.Start = 開始日 & " " & 開始時間     ⇦ こちらの行にデバックで矢印が入りました If 終了日 = "" And 開始日 <> "" Then 終了日 = 開始日 End If aITEM.End = 終了日 & " " & 終了時間 aITEM.MeetingStatus = 1 'olMeeting=1 aITEM.Recipients.Add "アドレス@mail.com" aITEM.Send i = i + 1 Loop 'oApp.Quit Set myFolder = Nothing Set myNameSpace = Nothing Set oApp = Nothing End Sub
jinoji

2021/03/16 10:59

CDate(開始日 & " " & 開始時間) でどうですか。
takao293

2021/03/16 12:32 編集

ありがとうございます。以下に修正しましたが 実行時エラー 型が一致しませんと出ました。 aITEM.Subject = イベント aITEM.Body = 場所 aIM.Start = CDate(開始日 & " " & 開始時間) If 終了日 = "" And 開始日 <> "" Then 終了日 = 開始日 End If aITEM.End = 終了日 & " " & 終了時間 こちらで合っていますでしょうか? aIM.Start =を抜くとコンパイルエラー’識別子’となりました。
jinoji

2021/03/16 12:43

そこでエラーになるということは、 開始日か開始時間の値がおかしいのではないでしょうか。 Debug.Print 開始日,開始時間 で確かめてみては?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問