Outlook VBAにおいてユーザーフォームをモジュールからアクティブにする方法

現在、Outlook 2010を使用しています。

VBAを開発しており、ユーザーフォームとモジュールを使用して1つのマクロを制作しようとしています。

Outlook 2010ではリボンを右クリック→リボンのユーザー設定→コマンドの選択下部のドロップダウンリストからマクロを選択→ユーザー設定タブに追加

でリボンへの登録が可能だと思います。

ユーザーフォームでは同様の設定ができないのでしょうか?

可能であればその手順をご教示下さい。


不可能であればユーザーフォームをモジュールの一部として利用しようと思うので、呼び出し方をご教示下さい。

|

投稿先としては、 End User むけの Community よりも MSDN の VBA Forum のほうが妥当ではないかと思います。

MSDN Visual Basic for Application

https://social.msdn.microsoft.com/Forums/ja-JP/home?forum=vbajp

さて本題ですが、 下記の同様の設定 というのが具体的に何を指すのか今一つうまく理解できません。

Custom Ribbon を 登録した Form を作成したいということでしょうか?

それとも Ribbon に Custom Form を登録したいということでしょうか?

あるいは それら以外の何かでしょうか?

何をしたいのかをもう少し詳しく説明してください。 

> ユーザーフォームでは同様の設定ができないのでしょうか?

Custom Form を Ribbon に登録したいというのであれば、 下記を参照してみてください。

Outlook 2010: Open custom form via your own ribbon

http://www.vboffice.net/sample.html?mnu=2&smp=85&cmd=showitem

この回答が役に立ちましたか?

役に立ちませんでした。

素晴らしい!フィードバックをありがとうございました。

この回答にどの程度満足ですか?

フィードバックをありがとうございました。おかげで、サイトの改善に役立ちます。

この回答にどの程度満足ですか?

フィードバックをありがとうございました。

こんにちは。

(1)Outlookの色々な機能をUserFormから実行できるようにして、(2)そのUserFormをOutlook(リボンやクイック アクセス ツール バー)から表示したい、ということでしょうか?

(2)についてはExcelになりますが、下記コラムで紹介されているような「Show」メソッド(UserForm1.Show)を使うことで表示できるかと思います。

・ゼロからはじめるVBA - ユーザーフォーム編 (1) フォームの概要 | マイナビニュース
http://news.mynavi.jp/articles/2009/08/24/vba/

(1)については、たとえばUserForm上にコマンドボタンを配置して、下記のようなコードを割り当て、UserFormをモードレス表示(http://www.shoeisha.com/book/hp/pc/office/Excel/files/text2.html)することで、Outlookの機能を実行することができます。

Private Sub CommandButton1_Click()
  Application.ActiveExplorer.CommandBars.ExecuteMso "NewMailMessage"
End Sub

上記コードにあるExecuteMsoメソッドの引数で指定するのは、Outlookにある各コマンドに割り当てられているIDで、下記ページからダウンロードできるコントロールIDリストに記載されています。

・Office 2010 Help Files: Office Fluent User Interface Control Identifiers
http://www.microsoft.com/en-us/download/details.aspx?id=6627

この回答が役に立ちましたか?

役に立ちませんでした。

素晴らしい!フィードバックをありがとうございました。

この回答にどの程度満足ですか?

フィードバックをありがとうございました。おかげで、サイトの改善に役立ちます。

この回答にどの程度満足ですか?

フィードバックをありがとうございました。

返信が遅くなり申し訳ありません。

1.Outlookにリボンを登録したマクロを実行

2.その際に使用する分岐(チェックボックス×17個)をユーザーフォームで表示

3.ユーザーフォームで選択したチェックボックスの状態を変数に代入して対象のExcelファイルにVolokup関数を使用して値を取得

4.新規メールを作成し、宛先・件名・本文をVBA(Outlookにコーディングしたもの)から記述

という流れです。

1,3,4は既にできているのですが、2ができれば効率が格段に上昇します。

色々と調べてみても同じような例が見当たらなかったので質問させていただきました。

この回答が役に立ちましたか?

役に立ちませんでした。

素晴らしい!フィードバックをありがとうございました。

この回答にどの程度満足ですか?

フィードバックをありがとうございました。おかげで、サイトの改善に役立ちます。

この回答にどの程度満足ですか?

フィードバックをありがとうございました。

こんにちは。

> 3.ユーザーフォームで選択したチェックボックスの状態を変数に代入して対象のExcelファイルにVolokup関数を使用して値を取得
> 4.新規メールを作成し、宛先・件名・本文をVBA(Outlookにコーディングしたもの)から記述

この3.と4.のマクロはOutlookの標準モジュール(or ThisOutlookSession)に記述されているのでしょうか?

もしそうであれば、(良し悪しは別として)スコープをPublicにすればユーザーフォームから呼び出すことができますので、チェックボックス×17個を設置したユーザーフォームを作成し、「UserForm1.Show vbModeless」のようなマクロを用意すれば、好きな時にユーザーフォームを表示できるようになるかと思います。


'ユーザーフォーム上のCommandButton1
Private Sub CommandButton1_Click()
  ThisOutlookSession.Macro1
End Sub

'ユーザーフォーム上のCommandButton2
Private Sub CommandButton2_Click()
  Macro2
End Sub


'ThisOutlookSessionのMacro1
Public Sub Macro1()
  MsgBox "ThisOutlookSession", vbSystemModal
End Sub

'標準モジュール(Module1)のMacro2
Public Sub Macro2()
  MsgBox "Module1", vbSystemModal
End Sub


もし3.と4.のマクロがExcel側で記述されており、それをOutlook上のユーザーフォームから呼び出したい、ということであれば、コードを見直す必要があります。

この回答が役に立ちましたか?

役に立ちませんでした。

素晴らしい!フィードバックをありがとうございました。

この回答にどの程度満足ですか?

フィードバックをありがとうございました。おかげで、サイトの改善に役立ちます。

この回答にどの程度満足ですか?

フィードバックをありがとうございました。

 
 

質問情報


2021年1月29日最終更新日 表示数 4,441 適用先: