エクセル雑感
VBAマクロと操作対象データの分離について

ExcelマクロVBAとエクセル関数についての私的雑感
公開日:2022-08-11 最終更新日:2022-08-12

VBAマクロと操作対象データの分離について


ツイッターの連続ツイートのまとめです。


VBAマクロを作成していく上で、マクロと操作対象のデータがどのような関係になるか。
そして、マクロとデータをどのように分離していくかについて連続ツイートした時のまとめです。


連ツイの内容

Excel VBA マクロとデータの分離s

https://twitter.com/yamaoka_ss/status/1557624821898706944


【VBAマクロとデータのお話】
はじめてマクロを作成する時は、
データブック&マクロブック
つまり、データの入っているブックにマクロを書くことが多いと思います。
1つのブックで完結しているので管理しやすいですね。
その中でさらに他のブックを使う事も可能です。


しかし、データとマクロが同居していると何かと不便なことがあります。
ブックを複製して複数使われている場合、マクロに変更を加えたい時・・・
全ての複製されたブックのマクロを直さなくてはならなくなります。
さすがにこれは大変なことに・・・


そこで、マクロとデータを分離したくなります。
・マクロブック → データブック
・アドイン → データブック
これは起動方法の違いだけなので同じことです。
ここで問題になってくるのがマクロの動作を制御する設定情報をどうするかです。
マクロブックやアドインのシートに保存することは可能です。

ここで特に記載しませんでしたが、
個人用マクロブックもありましたね。
これも考え方は同じことです。


ですが、全ユーザー共通の設定なら問題ないのですが、ユーザーが自由に設定できる情報の場合、この設定情報をどこに保存するかが問題になります。
マクロの入れ替え時にこの設定情報をいかに引き継ぐかを検討しなければならないからです。


そこで、
・さらに別ブックを用意してそこに書き込む。
・テキストファイル(形式は問わず)に書き込む。
マクロブック → データブック
       → 設定ファイル(ブックorテキスト)
このようにしておけば、マクロブックのみ再配布できるようになります。


設定情報にバージョンを入れておくことでバージョン管理もできますし。
バージョンアップ時にデータブックを自動変更したりと言ったことも可能になります。
もちろん大幅変更の場合は全部入れ替えが必要になる場合もでてくることはありますが。


さらに順番を入れ替えて、設定情報を書き込むブックから起動する方法も考えられます。
起動ブック → マクロブック → データブック
起動ブックを作りこめばバージョン管理やマクロブックの自動入れ替えに対応するように作ることもできますね。

追記
マクロブックは1つである必要はなく、複数のブックでも構いません。
場合によってはアドインも含まれます。
アドインの有効化無効化を制御することもあります。
ただし起動ブックは最小限のマクロにして、具体的な処理はマクロブックで行います。
起動ブックは極力変更が発生しないようにします。


話しが終わらなくなるのでお終いにしましたが、さらにいろいろな方法があります。
起動ブックは読み取り専用にしてしまう方法もあります。
その後は前の話しと合流していきます。
読み取り専用ブック → マクロブック → データブック
                   → 設定ファイル


当然ここまでくると、データブックをDBにしたくなります。
起動ブック → マクロブック → DB
設定情報はDBにユーザーごとに入れられます。
この場合は起動ブックもマクロも全て読み取り専用にします。
そしてこれはクライアントサーバーシステムそのものですね。


以上何パターンかを書きましたが、
いろいろと工夫することで、管理コストを下げることが出来るようになります。
是非ご自身の業務に合った良い方法をいろいろと検討してみてください。


ついでにVBAのセキュリティについて

Excel VBA マクロ セキュリティ
https://twitter.com/yamaoka_ss/status/1557647741119254530


別件としてVBAのセキュリティ云々の話しをついでにしておきます。
前記の起動ブックやマクロブックは共有フォルダなりにいれることになります。
このファイルにアクセスしている時点でセキュリティの内側にいるのですから、それ以上何を論じる必要があるのでしょうか。


VBAで注意すべきなのは、
出所不明(メール等できたよう)なものは、完全に安全を確認できない限り絶対にマクロ有効にしてはいけないという事です。
判別に困った時は、専門家に確認するようにしてください。




同じテーマ「エクセル雑感」の記事

ローカル版エクセルが「Office Scripts」に変わる日
エクセルVBA 段級位 目安
DXってなんだ? ITと何が違うの?
在庫を減らせ!毎日棚卸ししろ!
エクセル馬名ダービー
VBA学習のお勧めコース
コンピューターはブラックボックスで良い
VLOOKUPを使うことを基本としてシートを設計すべきか
VBAマクロと操作対象データの分離について
IF関数の論理式で比較演算子を省略したCOUNT系関数を書くのは
VBAでの式と文の違い


新着記事NEW ・・・新着記事一覧を見る

VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)
累計を求める数式あれこれ|エクセル関数応用(2024-01-22)
複数の文字列を検索して置換するSUBSTITUTE|エクセル入門(2024-01-03)
いくつかの数式の計算中にリソース不足になりました。|エクセル雑感(2023-12-28)
VBAでクリップボードへ文字列を送信・取得する3つの方法|VBA技術解説(2023-12-07)
難しい数式とは何か?|エクセル雑感(2023-12-07)
スピらない スピル数式 スピらせる|エクセル雑感(2023-12-06)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
4.繰り返し処理(For Next)|VBA入門
5.変数宣言のDimとデータ型|VBA入門
6.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
7.並べ替え(Sort)|VBA入門
8.条件分岐(IF)|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.マクロとは?VBAとは?VBAでできること|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ