ExcelのMacroOptionsメソッドとは?

このQ&Aのポイント
  • ExcelのMacroOptionsメソッドは、エクセルのFunctionプロシジャーにおいてユーザー定義関数の説明を設定するためのメソッドです。
  • ユーザー定義関数をエクセルブック本体ではなく、アドインとして使いたい場合に使用します。
  • しかし、MacroOptionsメソッドを使っても[マクロ オプション] ダイアログ ボックスに説明が表示されない場合があります。正確な使い方は分かりませんが、別のイベントにMacroOptionsメソッドを設定する必要があるかもしれません。
回答を見る
  • ベストアンサー

ExcelのMacroOptionsメソッド

エクセルのFunctionプロシジャーにてユーザー定義関数を作成したのですが その説明を[マクロ オプション] ダイアログ ボックスにいれようとMacroOptionsメソッドにて 説明をいれました。 このメソッドの実行イベントはWorkbooks_Openイベントでいれればいいとのことですけど ユーザー定義関数をいつでも使用したいので、エクセルブック本体にマクロとして組み込む のではなくアドインマクロとして、作成した標準モジュールのあるエクセルをアドインとして xlamで保存し、アドインを参照することにより使用したいと考えています。 その際、このユーザー関数の説明をいれるためにMacroOptionsメソッドをいれたいのですが xlamのThis_WorkBookモジュールのWorkbooks_Openイベントにいれましたが、実行されず [マクロ オプション] ダイアログ ボックスに表示されません。 どのモジュールのどのイベントにいれるのでしょうか? できることならxlam内のモジュールにいれたいのですが・・・・

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

xlamファイルのThisWorkbookに,Workbook_OpenではなくAddinInstallで記載しておきます。 記載例: private sub Workbook_AddinInstall() application.macrooptions macro:="関数名", description:="説明", category:=14 end sub ところで >その説明を[マクロ オプション] ダイアログ ボックスにいれようと >MacroOptionsメソッドにて説明をいれました。 関数(ユーザー定義関数)は,マクロダイアログにはそもそも現れません。従ってご質問で書かれていることが間違いでなければ,「マクロオプション」のダイアログを呼び出すことも,そもそも出来ません。 ユーザー定義関数についてのMacroOptionsの使い道は,fxボタン(関数ウィザード)にユーザー定義関数を登録するためのものです。

yamachan5407
質問者

お礼

ありがとうございます。 えっとfXボタンの登録で問題ないです。

関連するQ&A

  • Excelマクロでファイルオープンのダイアログ表示

    エクセルのマクロで、ファイルを開きたいのですが、 ファイルを直接指定するのではなくエクセルのツールバーの 「ファイルを開く」を選んだときのように ファイルをユーザーが選択できるようにダイアログを表示 させたいのです。 OPENメソッドではファイルを直接指定するしかないみたいなのですが・・・ 勉強不足でしたらすいません。 どなたか教えてください。

  • Excel ユーザー定義関数入力方法

    ユーザー定義関数はその関数を作ったファイルでないと セルに直接入力しても関数は出ないのですか 例えば Book1.xlsxとmacro.xlsmというファイルがあります。 macro.xlsmファイルにユーザー定義関数を作成しました。 macro.xlsmだとセルに直接入力しても作成した関数が候補が出ます。 Book1.xlsxだと関数の挿入から見つけないといけません。 macro.xlsmのファイルのThisWorkbookには Private Sub Workbook_Open() Application.MacroOptions _ Macro:="aaa", _ Description:="説明" End Sub と入ってます。

  • Excel VBA の ChangeFileAccess

    Excel(2000 SP-3) VBAの ChangeFileAccessがうまく行きません。 VBAからあるExcelファイルをWorkbooks.Open で開く処理の制御で悩んでいます。 2人で同時にマクロでhoge.xls をOpenすると、どちらも「他のユーザが使用中です」的なメッセージが出ませんでした。 (エクスプローラからクリックしたりして、hoge.xlsを直接開くと、他のユーザが使用中かどうかがわかります) それでは困るので、ChangeFileAccess のNotify:=true をセットしてみたら、2人目は他のユーザが使用中である旨のメッセージが出るようになりました。 しかし、ChangeFileAccess のNotifyはちゃんと設定されているようなのですが、 'ChangeFileAccess'メソッドは失敗しました:'_Workbook'オブジェクト とエラーが出ています。 ChangeFileAccessはどう使うのが正しいのでしょうか? ソースは Workbooks.Open Filename:=ThisWorkbook.Path & "\hoge.xls", updatelinks:=1, Notify:=True ActiveWorkbook.ChangeFileAccess Mode:=xlReadWrite, Notify:=True って感じなのですが。 Workbooks.Openはちゃんとできています。Workbooks.OpenがコケたらOn Error Goto で拾ってMsgBoxでメッセージを出す、という処理をしているのですが、Workbooks.OpenはOKなのにChangeFileAccessでコケて、On Error Goto に引っかかってしまっています。

  • VBAでマクロ付きファイルを開く場合

    こんにちは。 VBA初心者です。 VBA(Workbooks.Open Filename)を使ってマクロ付エクセルファイルを開こうとしたのですが、単体で開く時と違い「マクロを有効にするか無効にするか?」ダイアログが表示されません。 マクロを有効にしてファイルを開きたいのですが、これはダイアログが表示されていないだけで自動的に「マクロを有効」となってファイルが開いているのでしょうか?そうではない場合このダイアログを表示させるにはどうしたら良いでしょうか? 判りつらい説明で申し訳ありませんが、教えて下さい。

  • エクセルVBAで標準モジュールを保護したい

    エクセルのVBAマクロを使用したエクセルフィルがあります。 ユーザーは標準モジュールに記述した関数を使ってシートのマクロを変更してカストマイズできます。 ユーザーが標準モジュールを変更すると使用できなくなりますので、この標準モジュールだけをユーザーが変更できない、または見えないようにする方法をご教示いただけませんか。 よろしくお願いします。

  • EXCEL2007のマクロをアドインで使うには?

    お世話になります。 Excell2007の個人用マクロに登録してマクロを利用しておりますが 複数のエクセルを立ち上げようとすると「PERSONAL.XLSBは編集のためロックされています」というメッセージが表示され煩わしく感じております。この状況を回避するには、個人マクロに登録されているマクロをアドインとして利用するのがよいようなので、色々とやってみているのですが、アドインが表示されません。下記にて私の操作手順を記載致します。間違いがあればお教え願えませんでしょうか。済みませんが、何卒よろしくお願い致します。 (1)エクセルを新規に開き、そこに標準モジュ-ルを挿入 (2)PERSONAL.XLSB の標準モジュールに記載されているコードを(1)の標準モジュールにコピペ (3)(1)のエクセルを拡張子”xlam”で保存。保存場所は初期状態から変更せず”C:\Documents and Settings\(ユーザ名)\Application Data\Microsoft\AddIns” (4)エクセルを保存せず閉じる (5)エクセルを新規に開く (6)エクセルのオプションからアドインを選択し、管理がExcelアドインの状態で設定ボタンをクリック (7)(3)にてと保存したアドインを選択しOKボタンをクリック 以上です。エクセルを閉じ、再度新規に開いても、アドインのリボンは表示されません。 (7)の設定はしっかり残っております。 なお、OSはWindowsXP ProfessionalのSP3 を利用しています。 済みませんが、ご協力の程 宜しくお願い致します。

  • Excel アドインの更新配布について

    今、アドインにてユーザ定義関数を使用しています。 アドイン内の関数を修正しているのですが、 最新版がどれか分かるように、バージョンを記載しようと考えています。 アドインのVBA内に記載すればいいのですが、それだとファイル名で管理出来ないため、 後々面倒だと思い、アドインファイル名自体を変更したのですが、 既に、旧アドイン内の関数を利用しているエクセルシート内で 旧バージョンのアドインファイルを読みに行こうとしてエラーが出てしまいました。 通常、どのような管理方法をするのか教えてください。

  • Excel VBAでユーザーフォームが表示されない

    使用環境:Excel2007 OS:Winows Vista A、Bの二つのExcel97-2003形式のxlsファイルがあります。 エクセルには自作のアドインを設定してあります。 (1) Aを開くと、Bを読み取り専用で開きます (2) Bを開いたら、アドインのモジュールを呼び出します。 (3) アドインからAを保存せずに閉じさせ、Bのデータを使用しフォームを表示させます。 ↑の(3)のフォームを表示部分でエラーも出ず、スルーされてしまい困っています。。。 Showの前までは正常に動いています。 この方法よりスマートな手法があればぜひお聞かせください。 みなさまのお力をお貸し下さい。お願いします。 以下コード Aのコード Private Sub Workbook_Open() ActiveWindow.WindowState = xlMinimized Workbooks.Open "B.xls", ReadOnly:=True" ←(1) Workbooks("B.xls").Activate Application.Run ("'アドイン.xla'!Module_関数.Admin") ←(2) End Sub アドインのコード Public Sub Admin() Workbooks("A.xls").Close SaveChanges:=False ←(3) UserForm1.Show vbModal ←問題部分 End Sub

  • VBAで書いたExcelユーザー定義関数が上手く動きません

    WinXPSP2 Office2003 を使用しています。 プログラムは、本やネットで調べただけの素人です。 具体的には、大量のascファイルにファイル自身の情報をヘッダとして書き込む作業をします。 そのために、ファイルの情報などを返すユーザー定義関数を作り、それを用いた一連の書き込み作業をマクロにして保存し、アドイン化してしまおうと考えました。 作業をマクロにしてアドイン化することはできるようになりましたが、肝心のユーザー定義関数を作るVBAが良くわかりません。 たとえば以下のように、ファイルの作成日時を返すユーザー定義関数を書いて標準モジュールに張ってみたのですが、上手く動きませんでした(具体的には”#VALUE!”になる)。 Function CreationDate() CreationDate = ActiveWorkbook.BuiltinDocumentProperties("Creation Date").Value End Function 次の、ファイルの名前を返すユーザー定義関数は上手く動きました。 Function FileName() As String FileName = Application.ActiveWorkbook.Name End Function なぜ後者が動いて前者が動かないのか、よく理解できません。 どのように変えればよいのか、教えていただけないでしょうか? よろしくお願いします。

  • EXCELアドイン自動起動マクロ

    アドインに登録し、不特定のCSVファイルを読み込んだとき(OPENしたとき)に内容を判別し、起動するマクロを作成しようとしています。 標準モジュールに”Sub Auto_Open()”により記述し、アドイン登録しましたが、期待する動作となりません。 ----------------------------- Sub Auto_Open() MsgBox "ファイルが開く毎に起動させたい" End Sub ----------------------------- ☆EXCEL未起動→ファイルオープンしたときには、上記MsgBoxが表示されるが、EXCEL起動中→ファイルオープンでは表示されません。 ファイルを開くたびに動作するマクロを登録するためには、どのようなテクニックが必要なのでしょうか?

専門家に質問してみよう