VBA開発支援VBA開発を行うに当たって、特に厄介な課題の一つとして挙げられるのが「開発環境であるVBEがショボすぎる」という事である。VBEをカスタマイズする方法は色々あるが、ここでは「開発環境(VBE)にコマンドを追加して自作のVBAプログラムを実行する」方法を紹介する。きっかけ準備ソースコードを書き換えるVBAVBEに機能を追加するVBAショートカットキーを割り当てる設定まとめきっかけ以前よりVBAには「実行中のプロシージャを特定する術が無い」という課題があった。差し当たっての解決策として、私はプロシージャ流入時に下記の文を記載している。"functionName"また、モジュール先頭にも同様の文を記載している。"ModuleName"これにより、デバッグログを残す際に下記のような出力が出来るようにしていた。"hogehoge"しかし、新たに関数を作成したときや、リファクタリングにより名称を変更した際に都度メンテするのは大変である。そこで、VBAのソースコードをVBAから変更することはできないかという発想に至るのは、想像に難くない。探し出して実行するのは大変だ。イミディエイトから叩くという手もあるが、ログなどで流れてしまうので繰り返し実行するのは面倒だ。異なるプロジェクトだと操作が増えてさらに面倒だ。VBEのツールバー、メニューバーまたはショートカットキーを登録して、気軽に実行するようには出来ないだろうか。詳しい説明に入る前に、注意事項を一つ。VBEを操作するにはVBAのセキュリティレベルを下げる必要がある。これにより、ウイルスがVBAのソースコードを悪意のあるコードに書き換えて、エクセルファイル等に容易に感染させることが可能となる。非IT企業でVBAを書く人は、社内ではITスキルが高い人のはずである。開発者からウイルスが蔓延したとなっては今後の立場が危うくなるので、じゅ~~~ぶんに注意して欲しい。プロジェクトへのアクセスは信頼性に欠けますが出た時は、Excel側のセキュリティ設定を落とす必要がある。等で)ユーザー定義型は定義されていません。出た時は参照設定が足りていない。Extensibility」を追加ソースコードを書き換えるVBA実はソースコードを書き換えるのは簡単である。下記のコードを実行するとソースコードを読み取れたのが分かるはずだ。Explicit」に置換されるのが分かるはずだ。※行の文字列の置き換えなので、ソースコードが極端に破壊されることはないはずだが注意すること。ソースコードを拝借して、Access用かつバグが見受けられたので色々と修正してExcelで動くようにした。名称を更新してくれるだけなので、リファクタリングでしか役に立たない。挿入するプログラムも作りたい。VBProjectに素晴らしいサンプルがあるので、これを使わせて頂いた。元記事のソースコードの利用規約が不明なので、リンク先の紹介に留める。そのうちオリジナルのソースコードの書き下ろしが終わったら公開する。ショートカットキーを割り当てる設定VBEのコマンドにショートカットキーを割り当てる方法は、以前下記の記事で紹介した。ような形で実行できるようになる。まとめPROC_NAMEが自動で記入されるようになれば、正確なログを出力できるようになる。デバッグが容易となり、開発効率が向上する。今後はガンガン使っていきたい。過去に開発したプログラムでも、VBEに登録したいものがいっぱい出てきた。先日開発したWin32APIを64bit対応させる変換プログラムとか、www.excel-chunchun.comイミディエイトを初期化するコマンドとかwww.excel-chunchun.comモジュールをエクスポートしたり、エクスポートしたモジュールをWinMergeで過去のソースコードと差分を出してみたり。早く挑戦すればよかった。Part3游ゴシック大嫌いな同志諸君!お久しぶりです。今回はオートフィルタの設定範囲から任意の列のデータ部のRange...2019-02-22VBEをカスタマイズしてコメントアウトを効率的に行うこんばんちゅん。今日はV...www.excel-chunchun.com週1回の更新を目指して活動中です。週間)私がExcelを使っていて気になったことを記事に書いていきます。VBAを使い初めて、もう10年ほど経ちましたが、楽しくて楽しくて毎日自宅でもVBA書いてます。自作PCとかサーバー立てたりするのも好きなのでPCとかサーバーのことも書くかもしれません。記事の元ネタは主にTwitterの方で呟いてますので、最速で情報を仕入れたい方は是非フォローしてください。part12019-11-12SpecialFoldersの引数にString型変数を指定すると意図した通りに動かない2019-11-03ワークシート用ユーザー定義関数は使い方を誤ると危険である2019-10-28VBAのコメントの書き方の試行錯誤2019-10-27VBAでの広域コメントアウトの代替案2019-10-26VBAで戻り値のある複数シートをコピーする関数を作ってみた2019-10-22Outlookでメール受信者がローカルパスをクリックできるようにUNCパス化するマクロを作ってみた2019-10-21Outlookでメール受信者がローカルパスをクリックできるようにするマクロを作ってみた2019-10-20VBAでWin32APIの64bit対応自動変換プログラムを作ってみた2019-10-06ワークシート用ユーザー定義関数を揮発性にする方法2019-10-04VBAによる安定したワークシート用ユーザー定義関数の作り方2019-10-02VBA関数のライブラリ名やモジュール名の省略を検知するアイディア2019-09-29EnumWindowsを使って別プロセスのExcelを取得してみた2019-09-24エクセルマクロで野生のマグロを駆逐するミニゲームを作ってみた2019-09-19VBAでIIF関数が全ての項を評価してしまうのは当然である2019-09-16VBAの裏技?コロンで好きな位置にブレークポイントを設置するもっと見る最新記事(ハードウェア)2019-10-31Realforceを買ってみた。TS-932X-2Gを購入しました。広告プライバシーポリシースターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。