none
カスタマイズしたoutlookのtaskをVBAで操作する方法について RRS feed

  • 質問

  • お世話になります。

    現在、outlookのtaskを開発ツールを用いて、カスタマイズして使用しております。

    このカスタマイズしたtaskを、VBAを使用して、Excelに記載した内容の転記・宛先の入力・送信をしたいと考えています。

    VBAでタスクを呼び出し、送信をすることまではできたのですが、デフォルトのタスクしか呼び出すことができず、

    カスタマイズしたtaskを呼び出すことができません。この方法を教えていただけないでしょうか。

    加えて、カスタマイズしたtaskに追加したフィールドを指定する方法も教えていただきたいです。

    2018年6月21日 1:19

回答

  • こんにちは。

    ユーザー設定フォームでカスタマイズしたタスクをVBAで操作したい、ということでしょうか?

    処理されたい具体的な内容がよく分からないのですが、ItemsオブジェクトのAddメソッドでメッセージクラスを指定すれば、任意のアイテムを作成でき、「P.2」等のページ内のコントロールもUserForm上のコントロールと同じように扱うことができますので、ある程度の操作はできるかと思います。

    Public Sub Sample()
      Dim frm As Object
      Dim ctl As Object
      Dim txt As Object
      
      With Application.GetNamespace("MAPI").GetDefaultFolder(olFolderTasks)
        .Display
        'メッセージクラス指定でアイテム作成
        With .Items.Add("IPM.Task.MyTask") 'Outlook.TaskItem
          '「P.2」ページのコントロール操作
          Set frm = .GetInspector.ModifiedFormPages("P.2") 'MSForms.UserForm
          
          'コントロール列挙
          For Each ctl In frm.Controls
            Debug.Print ctl.Name
          Next
          
          'TextBox(TestUser)の値設定
          Set txt = frm.Controls("TestUser") 'MSForms.TextBox
          txt.Value = "テスト"
          .Display
        End With
      End With
    End Sub

    • 回答としてマーク tentekoten 2018年6月26日 1:44
    2018年6月21日 5:12

すべての返信

  • こんにちは。

    ユーザー設定フォームでカスタマイズしたタスクをVBAで操作したい、ということでしょうか?

    処理されたい具体的な内容がよく分からないのですが、ItemsオブジェクトのAddメソッドでメッセージクラスを指定すれば、任意のアイテムを作成でき、「P.2」等のページ内のコントロールもUserForm上のコントロールと同じように扱うことができますので、ある程度の操作はできるかと思います。

    Public Sub Sample()
      Dim frm As Object
      Dim ctl As Object
      Dim txt As Object
      
      With Application.GetNamespace("MAPI").GetDefaultFolder(olFolderTasks)
        .Display
        'メッセージクラス指定でアイテム作成
        With .Items.Add("IPM.Task.MyTask") 'Outlook.TaskItem
          '「P.2」ページのコントロール操作
          Set frm = .GetInspector.ModifiedFormPages("P.2") 'MSForms.UserForm
          
          'コントロール列挙
          For Each ctl In frm.Controls
            Debug.Print ctl.Name
          Next
          
          'TextBox(TestUser)の値設定
          Set txt = frm.Controls("TestUser") 'MSForms.TextBox
          txt.Value = "テスト"
          .Display
        End With
      End With
    End Sub

    • 回答としてマーク tentekoten 2018年6月26日 1:44
    2018年6月21日 5:12
  • > カスタマイズしたtaskに追加したフィールドを指定する方法

    よく考えたらUserPropertiesでカスタムフィールド名を指定した方が早いですね😅

    Public Sub Sample2()
      With Application.GetNamespace("MAPI").GetDefaultFolder(olFolderTasks)
        .Display
        'メッセージクラス指定でアイテム作成
        With .Items.Add("IPM.Task.MyTask") 'Outlook.TaskItem
          .UserProperties("カスタムフィールド名").Value = "あいうえお"
          .Display
        End With
      End With
    End Sub

    2018年6月21日 8:14
  • 回答ありがとうございました。

    連絡遅くなり申し訳ありません。

    無事にoutlookのフォームを立ち上げて、Excelの内容を記載して発行することができました。

    教えていただきありがとうございました。

    2018年6月26日 1:44