none
Outlook365で仕分けルールの移動先フォルダーを変更したい RRS feed

  • 質問

  •  

     

    登録されている仕分けルールで、移動先のフォルダーを変更したいのですが、方法がわかりません。
    仕分けルールを呼び出すことはできるのですが、なにせ初心者でメゾットがわかりません。
    どなたか教えていただけませんか?
        Dim olRules As Rules
        Dim objRule As Rule
       
        ' /* カーレントの仕分けルールを取得するオブジェクトの取得 */
        Set olRules = Application.Session.DefaultStore.GetRules
        Set objRule = olRules.Item(1) ' /* 1 Start */
        With objRule
            MsgBox .Name
            MsgBox .Actions.MoveToFolder.Folder <-- ここの値を変更したい
        End With


    2019年9月7日 6:42

すべての返信

  • まずはヘルプをみた方がいいでしょう。

    調べたら、MoveOrCopyRuleAction.Folder プロパティ
    取得と代入が可能なようなのでそのまま、変更したいフォルダを
    代入すればいいのではないでしょうか。

    Sub test()
        Dim olRules As Rules
        Dim objRule As Rule
    
        ' /* カーレントの仕分けルールを取得するオブジェクトの取得 */
        Set olRules = Application.Session.DefaultStore.GetRules
    
        For Each objRule In olRules
            With objRule
                Select Case .Name
                Case "仕分けルールの名前1"
                    Set .Actions.MoveToFolder.Folder = 仕分け先のフォルダーオブジェクト
                Case "仕分けルールの名前2"
                    Set .Actions.MoveToFolder.Folder = 仕分け先のフォルダーオブジェクト
                ' ...
                End Select
            End With
        Next
    End Sub


    • 編集済み infade 2019年9月7日 17:09 余計なものが入っていたので削除
    2019年9月7日 17:08
  • infade様 ありがとうござます。

    まずは連絡が遅れまして申し訳ありません。

    やってみましたが「この操作を行うために必要なアクセス権がありません」8007005エラーが発生します。Webで調べられたことで、ルートフォルダの設定(設定画面に入力場所が表示されませんでした)、ファイルやフォルダーに読取専用権限を外したりしましたが、エラーは回避されませんでした。

        Dim olRules As Rules
        Dim objRule As Rule
        Dim oInbox As Outlook.Folder
        Dim oMoveTarget As Outlook.Folder
     
        Set oInbox = Application.Session.GetDefaultFolder(olFolderInbox)
        Set oMoveTarget = oInbox.Folders("Test")

        Set olRules = Application.Session.DefaultStore.GetRules

        Set objRule = olRules.Item(1) ' /* 1 Start */
        With objRule
            MsgBox .Name
            MsgBox .Actions.MoveToFolder.Folder
            Set .Actions.MoveToFolder.Folder = oMoveTarget <--エラー
        End With

    申し訳ありません。回避方法がわかればありがたいです。

    2019年9月8日 4:30
  • まず、手動で仕分けルールを変更することはできますか?
    手動で行っても同じエラーが出る場合は VBA 側の問題ではないと思います。

    エラーメッセージで調べてみましたが、本件に関連しそうな情報はありませんでした。
    (仕分けルールとは別のところで症状が起きているみたいです)

    あとは、以下の部分でフォルダーはちゃんと取得できていますか?

        Set oInbox = Application.Session.GetDefaultFolder(olFolderInbox)
        Set oMoveTarget = oInbox.Folders("Test")
        Debug.Print Not oMoveTarget Is Nothing

    現在設定されている仕分け先のフォルダーと親フォルダーが同じサブフォルダーなら
    Folder オブジェクトの Parent プロパティで 親フォルダーの Folder オブジェクトを
    取得できるのでここから Folders コレクションで取得する方法もあります。

        ' 仕分け先のフォルダーの上位フォルダーと同じフォルダーにある Test フォルダーを取得
        Set .Actions.MoveToFolder.Folder = .Actions.MoveToFolder.Folder.Parent.Folders("Test")

    • 回答の候補に設定 VB勉強中 2019年9月9日 5:53
    2019年9月8日 5:40
  • infade様 ありがとうござます。

    申し訳ありませんでした。GetDefaultFolder(olFolderInbox)を受信トレイにしていなかったことが原因です。

    よって移動先のフォルダオブジェクトがNothingでした。

    上手く変更できました。

    ありがとうございました。時間がかかって申し訳ありませんでした。

    2019年9月9日 5:56