忍者ブログ
2025.05│ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
Windowsあれこれ、サービス・SWあれこれ、会計・経理あれこれ、いまさら生活雑学、いまさら都市伝説などなど。
カレンダー
04 2025/05 06
S M T W T F S
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
最新コメント
[11/12 でら]
[09/24 えろかず]
[09/23 空飛ぶ龍]
[09/05 えろかず]
[08/29 アシシ@上海]
最新トラックバック
プロフィール
HN:
erokazu
性別:
非公開
バーコード
ブログ内検索
2025年05月16日 (Fri)
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

2009年07月08日 (Wed)
さてさて。久しぶりにエクセルVBAを使って遊んでたわけなんです。
ちょろっと触ったことある人ならわかると思いますが、結構同じような処理を使うことはあるかと。

んでね、一般的なSE業における開発と同じで、
なるべく共通的な関数群だったりを作って、ちゃんとバージョン管理とか行っておくと便利なわけで。

一般的には共通モジュール(.basモジュールや.clsモジュール)とかにしておいて、新しいの作る時とかに流用したりするわけですが。

とはいえ、これらのモジュール群は通常エクセルブック内に包含されてしまっていて、
成果物が多岐にわたるとバージョン管理なんて難しくてしょうがないわけです。

いちいち毎回毎回インポート&エクスポートとかすればなんとかなりそうですが、
めんどくさくてやってられません。

つうことでこのプロセスを自動化しちゃえばオッケーてなわけですよ。

知ってる人も多いと思いますが、
これらの共通モジュール群をエクスポート&インポートできる関数があるんですねぇ。

なら使っておかない手はないでしょう。つうことでですね・・・。

↓↓↓

【対応のための手順サマリ】
①共通モジュール群の管理用のフォルダを設ける
②これらを利用するアプリ・ツールの起動時に、自動的に①たちをインポートさせる
③アプリ・ツールの終了時に、自動的に①たちをエクスポート(またはリムーブ)させる

なぁんてことにしておけば、成果物が多岐に渡ってしまっているような場合でも、
常に最新版のモジュールを管理しておくことが可能なわけです。

さらに、エクスポート時に、ファイル名に日時情報等を付与しておくことで、擬似的にバージョン管理を行うことも可能というわけ。


ということで、簡単な例をつかって上記②③を実装してみましょう。

【②】エクセル起動時に必要なモジュールを自動インポートさせる
ワークブックオブジェクトThisWorkbookのWorkbook_Open()を実装します。

Private Sub Workbook_Open()
'・・・前後略

Dim Val_ModulePath as String 'インポート対象モジュールのフルパス(*.basまで含める)
Application.VBE.VBProjects("VBAProject").VBComponents.Import ModulePath

'・・・前後略
End Sub



【③】エクセル終了時に管理対象のモジュールを自動エクスポートさせる
ワークブックオブジェクトThisWorkbookのWorkbook_BeforeSave()を実装します。

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'・・・前後略

Dim Val_ModulePath as String 'エクスポート先のフルパス(*.basまで含める)
Application.VBE.VBProjects("VBAProject").VBComponents.Export ModulePath
'上を応用してフルパスに日時情報とかを含めればバージョン管理できる

Dim Val_ModuleName as String 'リムーブするモジュールの名称(*.basは含めない)
Application.VBE.VBProjects("VBAProject").VBComponents.Remove _
Application.VBE.VBProjects("VBAProject").VBComponents(Val_ModuleName)
'他成果物から最新化する可能性もあるので、必ずリムーブしておく

'・・・前後略
End Sub



はい、興味ない人には全然おもろない話題でしょうが・・・。
何気に内部統制とかで細かい話するとこれらVBAツール系の扱いとかで話題になったりしますよね。

たかがVBA。されどVBA。エクセルツール類も立派な会社の資産です。
みなさんもちゃんと管理してきましょう!
PR
この記事にコメントする
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
この記事へのトラックバック
この記事にトラックバックする:
←No.79No.78No.77No.76No.75No.74No.73No.72No.71No.70No.69
Pick UP!