VBAマクロと操作対象データの分離について
ツイッターの連続ツイートのまとめです。
そして、マクロとデータをどのように分離していくかについて連続ツイートした時のまとめです。
連ツイの内容
https://twitter.com/yamaoka_ss/status/1557624821898706944
はじめてマクロを作成する時は、
データブック&マクロブック
つまり、データの入っているブックにマクロを書くことが多いと思います。
1つのブックで完結しているので管理しやすいですね。
その中でさらに他のブックを使う事も可能です。
ブックを複製して複数使われている場合、マクロに変更を加えたい時・・・
全ての複製されたブックのマクロを直さなくてはならなくなります。
さすがにこれは大変なことに・・・
・マクロブック → データブック
・アドイン → データブック
これは起動方法の違いだけなので同じことです。
ここで問題になってくるのがマクロの動作を制御する設定情報をどうするかです。
マクロブックやアドインのシートに保存することは可能です。
ここで特に記載しませんでしたが、
個人用マクロブックもありましたね。
これも考え方は同じことです。
マクロの入れ替え時にこの設定情報をいかに引き継ぐかを検討しなければならないからです。
・さらに別ブックを用意してそこに書き込む。
・テキストファイル(形式は問わず)に書き込む。
マクロブック → データブック
→ 設定ファイル(ブックorテキスト)
このようにしておけば、マクロブックのみ再配布できるようになります。
バージョンアップ時にデータブックを自動変更したりと言ったことも可能になります。
もちろん大幅変更の場合は全部入れ替えが必要になる場合もでてくることはありますが。
起動ブック → マクロブック → データブック
起動ブックを作りこめばバージョン管理やマクロブックの自動入れ替えに対応するように作ることもできますね。
追記
マクロブックは1つである必要はなく、複数のブックでも構いません。
場合によってはアドインも含まれます。
アドインの有効化無効化を制御することもあります。
ただし起動ブックは最小限のマクロにして、具体的な処理はマクロブックで行います。
起動ブックは極力変更が発生しないようにします。
起動ブックは読み取り専用にしてしまう方法もあります。
その後は前の話しと合流していきます。
読み取り専用ブック → マクロブック → データブック
→ 設定ファイル
起動ブック → マクロブック → DB
設定情報はDBにユーザーごとに入れられます。
この場合は起動ブックもマクロも全て読み取り専用にします。
そしてこれはクライアントサーバーシステムそのものですね。
いろいろと工夫することで、管理コストを下げることが出来るようになります。
是非ご自身の業務に合った良い方法をいろいろと検討してみてください。
ついでにVBAのセキュリティについて
https://twitter.com/yamaoka_ss/status/1557647741119254530
前記の起動ブックやマクロブックは共有フォルダなりにいれることになります。
このファイルにアクセスしている時点でセキュリティの内側にいるのですから、それ以上何を論じる必要があるのでしょうか。
出所不明(メール等できたよう)なものは、完全に安全を確認できない限り絶対にマクロ有効にしてはいけないという事です。
判別に困った時は、専門家に確認するようにしてください。
同じテーマ「エクセル雑感」の記事
ローカル版エクセルが「Office Scripts」に変わる日
IF関数の論理式で比較演算子を省略したCOUNT系関数を書くのは
新着記事NEW ・・・新着記事一覧を見る
TRIMRANGE関数(セル範囲をトリム:端の空白セルを除外)|エクセル入門(2024-08-30)
正規表現関数(REGEXTEST,REGEXREPLACE,REGEXEXTRACT)|エクセル入門(2024-07-02)
エクセルが起動しない、Excelが立ち上がらない|エクセル雑感(2024-04-11)
ブール型(Boolean)のis変数・フラグについて|VBA技術解説(2024-04-05)
テキストの内容によって図形を削除する|VBA技術解説(2024-04-02)
ExcelマクロVBA入門目次|エクセルの神髄(2024-03-20)
VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)
アクセスランキング ・・・ ランキング一覧を見る
1.最終行の取得(End,Rows.Count)|VBA入門
2.繰り返し処理(For Next)|VBA入門
3.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
4.変数宣言のDimとデータ型|VBA入門
5.RangeとCellsの使い方|VBA入門
6.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
7.セルのクリア(Clear,ClearContents)|VBA入門
8.メッセージボックス(MsgBox関数)|VBA入門
9.条件分岐(Select Case)|VBA入門
10.ブック・シートの選択(Select,Activate)|VBA入門
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。