エクセル雑感
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 ・・・新着記事一覧を見る

付録:AI×VBA実践リソース集|生成AI活用研究(2025-05-25)
おわりに:AI×VBAはあなたの未来を変える強力な武器|生成AI活用研究(2025-05-25)
第7章:さらなる高みへ!AI×VBA応用テクニックと未来への備え|生成AI活用研究(2025-05-24)
第6章:AIとVBAを学び続ける!あなたの「超効率化」を止めないヒント|生成AI活用研究(2025-05-22)
第5章:AI×VBAでつまづかない!トラブルシューティングとAIとの付き合い方 |生成AI活用研究(2025-05-21)
第4章:【事例で学ぶ】AIとVBAでExcel作業を劇的に効率化する! |生成AI活用研究(2025-05-20)
第3章:AIを「自分だけのVBA先生」にする!質問・相談の超実践テクニック|生成AI活用研究(2025-05-19)
第2章 VBAって怖くない!Excelを「言葉で動かす」(超入門)|生成AI活用研究(2025-05-18)
第1章:AIって一体何?あなたのExcel作業をどう変える?(AI超基本)|生成AI活用研究(2025-05-18)
AI時代のExcel革命:AI×VBAで“書かない自動化”超入門|生成AI活用研究(2025-05-17)


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

1.最終行の取得(End,Rows.Count)|VBA入門
2.繰り返し処理(For Next)|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
5.ひらがな⇔カタカナの変換|エクセル基本操作
6.RangeとCellsの使い方|VBA入門
7.メッセージボックス(MsgBox関数)|VBA入門
8.セルのクリア(Clear,ClearContents)|VBA入門
9.FILTER関数(範囲をフィルター処理)|エクセル入門
10.条件分岐(Select Case)|VBA入門




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


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



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