[[20250612153729]] 『Outlookの予定削除』(ななし) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『Outlookの予定削除』(ななし)

お世話になります。
chatgptでOutlookの指定した日付の予定を削除するコードを取得したんですが、必ず予定が残ってしまいます。(複数回実行すれば消えるんですが、1回で削除できません。)
OutlookVBAは詳しくなく、コードの検証もどこから手を付けていいのか分からない状態です。
よろしくお願いします。

 Sub Macro1()

     Dim olApp As Object
     Dim olNamespace As Object
     Dim olCalendar As Object
     Dim olItem As Object
     Dim targetDate As Date
     Dim startDate As Date
     Dim endDate As Date

     ' Outlookアプリケーションのオブジェクトを取得
     Set olApp = CreateObject("Outlook.Application")
     Set olNamespace = olApp.GetNamespace("MAPI")
     Set olCalendar = olNamespace.GetDefaultFolder(9) 

     ' 削除対象の日付を設定(例:2025年6月5日)
     targetDate = DateSerial(2025, 6, 5)
     startDate = targetDate & " 00:00:00"
     endDate = targetDate & " 23:59:59"

     ' カレンダーアイテムをループして削除
     For Each olItem In olCalendar.Items
         If olItem.Start >= startDate And olItem.Start <= endDate Then
             olItem.Delete
         End If
     Next olItem

 End Sub

< 使用 Excel:Excel2021、使用 OS:Windows11 >


良く見てませんので外していたらごめんなさい。。。^^;

indexをつかい
Each ではなくループカウンタで最後から最初へステップダウンして
消すとうまく行くかもしれません
(*^^*)

<< _ _ >>
(隠居Z) 2025/06/12(木) 15:51:55


 For Each olItem In olCalendar.Items
      If olItem.Start >= startDate And olItem.Start <= endDate Then
          olItem.Delete
      End If
 Next olItem

                      ↑を  ↓に 変える   
 Dim i&
 For i = olCalendar.Items.Count To 1 Step -1
     If olItem.Start >= startDate And olItem.Start <= endDate Then
         olCalendar.Items(i).Delete
     End If
 Next


どうなるでせう

(隠居Z) 2025/06/13(金) 08:57:35


 olItemセットしなくて大丈夫ですか?>隠居Zさん

かぶりましたが、わたしも作ってみました。
結局、隠居Zさんのおっしゃる通り、上から削除したのが問題のようですね。

 Sub Macro1()

     Dim olApp As Object
     Dim olNamespace As Object
     Dim olCalendar As Object
     Dim olItem As Object
     Dim targetDate As Date
     Dim startDate As Date
     Dim endDate As Date
     Dim i As Long

     ' Outlookアプリケーションのオブジェクトを取得
     Set olApp = CreateObject("Outlook.Application")
     Set olNamespace = olApp.GetNamespace("MAPI")
     Set olCalendar = olNamespace.GetDefaultFolder(9)

     ' 削除対象の日付を設定(例:2025年6月5日)
     targetDate = DateSerial(2025, 6, 5)
     startDate = targetDate & " 00:00:00"
     endDate = targetDate & " 23:59:59"

     ' カレンダーアイテムをループして削除
     For i = olCalendar.Items.Count To 1 Step -1
        Set olItem = olCalendar.Items(i)
        If olItem.Start >= startDate And olItem.Start <= endDate Then
            olItem.Delete
        End If
    Next i

  End Sub
(ゆたか) 2025/06/13(金) 09:54:55

 olItemセットしなくて大丈夫ですか?>隠居Zさん
ゆたか さんへ
ありがとうございます。(*^^*)
直接指定でもきえてくださいましたです。。。けど。。。あまり自信は有りません^^;
何か不都合が含まれておりましたら教えて戴けると幸いです。
m(__)mm(__)mm(__)m
(隠居Z) 2025/06/13(金) 10:47:21

隠居Z 様
ゆたか 様

ありがとうございます
無事削除できました!

下から削除するのは行削除だと当たり前ですが今回は全く思い当たらなかったです。
非常に助かりました。
重ね重ねお礼申し上げます。
(ななし) 2025/06/13(金) 15:24:57


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.