ツイッター出題回答
VBAマクロと操作対象データの分離について

ExcelマクロVBAとエクセル関数についての私的雑感
最終更新日: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で注意すべきなのは、
出所不明(メール等できたよう)なものは、完全に安全を確認できない限り絶対にマクロ有効にしてはいけないという事です。
判別に困った時は、専門家に確認するようにしてください。




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

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


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

スピルとは:スピル基礎から応用までの問題集|エクセル入門(2022-09-26)
リーグ表に対戦番号を振る|ツイッター出題回答 (2022-09-23)
脱字メーカー(文字列から1文字削除)|ツイッター出題回答 (2022-09-05)
スピルとは:旧関数でスピルを使う問題と解説|エクセル入門(2022-09-21)
スピルとは:スピル入門の問題と解説|エクセル入門(2022-09-16)
直積(クロス結合、交差結合)とピボット解除|エクセル入門(2022-09-08)
脱字メーカー(文字列から1文字削除)|ツイッター出題回答 (2022-09-05)
【VBA学習のお勧めコース】|VBA入門(2022-09-02)
振込手数料を先方負担にした時の振込金額と手数料の算出|ツイッター出題回答 (2022-09-01)
構成比を合計しても100%にならないと言われた…|ツイッター出題回答 (2022-09-01)


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

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.繰り返し処理(For Next)|VBA入門
5.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
6.Excelショートカットキー一覧|Excelリファレンス
7.並べ替え(Sort)|VBA入門
8.マクロって何?VBAって何?|VBA入門
9.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
10.エクセルVBAでのシート指定方法|VBA技術解説




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


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



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