• ベストアンサー

VBA プロシージャの名前の取得

プロシージャ名を取得できないかなと考えています。 ・Form_Openプロシージャ内で「Form_Open」という文字を取得 ・フォーム上に「新規登録」というボタンを作成、クリックした時にできる「新規登録_Click」プロシージャ内で「新規登録_Click」という文字を取得 不可能な場合、各プロシージャに「Form_Open」や「新規登録_Click」をベタ書きしようと考えていますが、非効率と考え、やりたくありません。 できればバージョンは2000以降で、ExcelでもAccessでも構いません。 可能かどうかだけでも教えてください。

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

  • ベストアンサー
  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

>不可能な場合、各プロシージャに「Form_Open」や「新規登録_Click」をベタ書きしようと考えていますが 何がしたいのか全く解りませんが、”プロシージャ名取得”の関連情報のリンクだけ紹介しておきます。 http://oshiete1.goo.ne.jp/qa1219426.html http://park7.wakwak.com/cgi-bin/sbox/~efc21/exqalounge.cgi?print+200905/09050016.txt http://www.officetanaka.net/excel/vba/vbe/05.htm http://support.microsoft.com/kb/410621/ja http://search.goo.ne.jp/web.jsp?dummy=%F3%FE%F3%FE%F3%FE&status=select&from=goo_oshiete&PT=goo_oshiete&nsMT=&MT=vba+%A5%D7%A5%ED%A5%B7%A1%BC%A5%B8%A5%E3%CC%BE+%BC%E8%C6%C0&c=0

その他の回答 (2)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。 >できればバージョンは2000以降で、ExcelでもAccessでも構いません。 最初に、もし、マクロを作成しようとするなら、アプリケーションは決めてください。内容的にみて、設計のあやふやなものは、回答しにくいです。Excelは、Excel VBAで、Access はAccess VBAのスタイルがあります。共有する部分はあっても、スタイルが違います。 ハンドル名から、VBAをjobにしているなら、素人の方だとは思いませんが、タスク(仕事)と、その作業過程の、主と従は混同しないほうがよいです。その過程の内容を限定して、可能かどうかと聞かれても、経験の多少に関わらず、ご自身でさえ見通しの立てられないものは、掲示板で聞いても、ほぼ無理と考えたほうがよいです。 今回は、Yes ともNoとも回答できません。 編集のテクニックなのか、マクロ作業中なのか、その区分けすら分かりません。 >・Form_Openプロシージャ内で「Form_Open」という文字を取得 >・フォーム上に「新規登録」というボタンを作成、クリックした時にできる「新規登録_Click」プロシージャ内で「新規登録_Click」という文字を取得 実際に、実行中のプロシージャ名を取るのは、VB.Net にはありますが、VB6系では用意されていません。少なくとも私は知りません。コードの中にあらかじめ書いておくしかありません。そんなに手間でもないと思います。 '例: MsgBox "Run on procedure CommandButton1_Click of Form UserForm1" しかし、このようなスタイルが成立するのは、On Error Goto ErrorHandler で、エラーが起きたときだけです。 稼働中のコントロール名を取得するなら、こうなります。 MsgBox ActiveControl.Name こちらは、実行後にコントロールのプロパティを変更する場合に使用します。 この辺りは、どこまでできているのでしょう。 『「新規登録_Click」をベタ書き』というのは、それぞれのコードに書き入れたくないということでしょうか。何に対して非効率なのか、いまひとつ、共感が沸きません。たとえば、まさかコピー&ペーストが面倒だということでもないと思います。 どういう状況でなぜ必要なのかとか、そういう説明がありません。Error 発生の際のどこから発生しているか、それを提示する以外には、プロシージャ名を取るのはあまり意味がありません。 大事なことは、最終的に、何をしたいかなのです。

  • rivoisu
  • ベストアンサー率36% (97/264)
回答No.2

Excelの場合 workbookに含まれるVBのコードを扱うには次のObjectを使用します ActiveWorkbook.VBProject.VBComponents メソッドやプロパティは自分で調べてください。 私はVBのコードをテキストに吐き出して分析するために以下のようなコードを書きました。(一部ですが) For Each vbo In ActiveWorkbook.VBProject.VBComponents If (vbo.Type = 1 Or vbo.Type = 2) And vbo.Name <> "VBE" Then i = i + 1 モジュール名(i) = vbo.Name vbo.Export filename:=tempパス & モジュール名(i) & ".bas" End If Next VBAのコードを書き換えることがVBAでできるかどうかはわかりません。

関連するQ&A