none
Outlook2016で、VBAで「予定」フォームを改修する方法について RRS feed

  • 質問

  • Outlook2016で、「予定」フォームを改修することになりました。

    実現方法をインターネットで調査していますが、下記の⑫からがわかりません。

    【質問①】~【質問④】のご教授を願えませんでしょうか?

    ①「開発」タブを選択し、画面上部「フォームのデザイン」ボタンをクリックすると、「フォームのデザイン」ダイアログが表示される。
    ②フォルダーの場所リストから「標準のフォーム ライブラリ」を選択し、「予定」を選択し、「開く」ボタンをクリックする。
    ③「予定」タブの横にある、「(P.2)」タブを選択し、画面上部「ページ」-「このページを表示」をクリックする。
    ④画面上部「コントロールツールボックス」ボタンをクリックすると、「ツールボックス」ダイアログが表示される。
    ⑤「コマンドボタン」と「テキストボックス」を1つずつ配置する。※「コマンドボタン」の名前:CommandButton1、「テキストボックス」の名前:TextBox1。
    ⑥画面上部「発行」-「フォームの発行」をクリックし、表示名を「予定(テスト)」、フォーム名を「yotei_test」とした。
    ⑦Outlook2016の左下の「カレンダー」アイコンをクリックし、画面上部「新しいアイテム」-「ユーザー設定フォーム」-「予定(テスト)」をクリックする。

    フォームが開かれた際、下記の様な仕様としたいと思っています。
      (A)⑦をクリックした際、デフォルトで「P.2」が開く。 ※通常は「予定」が開く。
      (B)⑦をクリックした際、「テキストボックス」に開いた時刻がセットされる。※例:2017/10/03 14:10
     (C)「コマンドボタン」をクリックすると、「テキストボックス」が非活性もう1回クリックすると活性とスイッチする様にしたい。

    それを実現するために、
    ⑧「開発」タブを選択し、画面上部「フォームのデザイン」ボタンをクリックすると、「フォームのデザイン」ダイアログが表示される。
    ⑨フォルダーの場所リストから「予定表」を選択し、「予定(テスト)」を選択し、「開く」ボタンをクリックする。
    ⑩画面上部「Visual Basic」ボタンをクリックする。
    ⑪画面左の方に、「Project1(VbaProject.OTM)」-「Microsoft Outlook Objects」-「ThisOutlookSession」の階層表示されている。
    ⑫「ThisOutlookSession」を開く。

    【質問①】恐らく、ここに、プログラムを記述すると、上記の(A)~(C)を実現できると思っていますが、あっていますでしょうか?
     【質問②】(A)の⑦がクリックされて開かれるイベントを記述し、デフォルトで「P.2」が開く様なプログラムの記述方法がわからない。
     【質問③】(B)「テキストボックス」に開いた時刻がセットされる様なプログラムの記述方法がわからない。
     【質問④】(C)「コマンドボタン」をクリックすると、「テキストボックス」が非活性もう1回クリックすると活性とスイッチする様なプログラムの記述方法がわからない。

    2017年10月4日 2:52

すべての返信

  • フォームをデザイン状態にして、開発タブにあるコードの表示でスクリプトエディターを表示して、以下のコードを貼り付けて、発行しなおします。

    Function Item_Open()
    	Item.GetInspector().SetCurrentFormPage("P.2")
    
    	Set page = Item.GetInspector.ModifiedFormPages("P.2")
    	Set txb = page.Controls("TextBox1")
    	txb.Text  = Year( Now)  & "/"  & Right("0" & Month(Now) , 2) & "/" & Right("0" & Day(Now) , 2)  & " " & Right("0" & Hour(Now),2) & ":" & Right("0" & Minute(Now),2)
    End Function
    
    Sub CommandButton1_Click()
    	set page = Item.GetInspector.ModifiedFormPages("P.2")
    	Set txb = page.Controls("TextBox1")
    	txb.Enabled = Not txb.Enabled
    End Sub

    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    2017年10月5日 3:56
  • gekka様

    ご返信ありがとうございます。

    実際に試しましたが、動作しませんでした。

    ボタンをクリックした際に、エラーもでません。認識されていない様に思われます。

    何度か、新しいフォームを作成したりして手順を繰り返しましたが、やはり正常に動作しませんでした。

    動作しないチェックポイントや、何かログが吐き出されるなど、手掛かりはありませんでしょうか?

    よろしくお願いいたします。

    2017年10月6日 7:56