- ベストアンサー
VBAのバージョンアップ
エクセル2002使用です。 エクセルVBAで社内共通の日報を作成しました。 しかし、ソフト作成技術の未熟さに加え、後から追加する項目も出てくるので、バージョンアップ(マクロの記述の更新)をしたいのですが、どうすれば良いのかわかりません。 日報ですので毎日データーが蓄積されていっているのでデータは残したままバージョンアップをしたいです。 HPで調べるとアドインの作成とかあるのですが、もう一つよくわかりません。わかりやすいHPなどの資料が欲しいのですが・・・ http://www.asahi-net.or.jp/~ef2o-inue/ このあたりを参考にしているのですが、どのような方法が一番適切なのかよくわかりません。 よろしくご指導願います。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>1)をマクロで操作することはできるのでしょうか? 可能ですが、BASの読込機能(テキスト読込)とモジュールの書き込み機能(行単位書き込み)を備えなくてはいけないので面倒です。 なので、VBAのコマンドで「(書き換え対象)モジュールの削除」と「(新規)モジュールのコピー」を行う方が遙かに簡単かと思います。 (いずれにしても、モジュール操作のVBAコマンドを覚える必要があります。) 複数のモジュールを安全に書き換えるには、モジュール更新のチェックなどの仕掛けを備えた方が安全かと思います。 他の方が書かれるようにアドイン型式にして、アドインファイルとアドインを自動更新するファイル(もしくは更新機能を日報ブック仕込む)にと共に配布すると、一括して更新できるので、大幅な改変があっても自在に簡単に可能かと思います。 基本的な情報は、貴方の探したHPでほとんど入手可能です。
その他の回答 (3)
- ta123
- ベストアンサー率51% (95/186)
参考にされているHPの「配布の問題」で色々の方法を説明されていました。モジュールの入れ替えやアドインについても触れられています。(このページが分からないということでしょうか?) ところで「シートのコピー」とはワークシートそのものをコピーする("編集" -> "シートの移動またはコピー")と言う意味ですが、これでも問題が発生するということでしょうか。
補足
ta123さま、早速のご回答ありがとうございます。 待ったくの勉強不足でした。すいません。 シートをコピーできないとは、時間の記録をとっていて、セルに値を入力した時点で時間を自動入力しているので、移し変えると時間がかわってしまいます。 少し勉強しますのでまたよろしくお願いします。 とりあえずしなければならないことはわかりました。 ありがとうございます。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 他人に配布するのに、ブックでは製作者がいない環境での管理に都合が悪いから、アドイン型(xla)にするわけで、インストールする場所を特定させて、その都度、アドインだけを送りつけ、共有スペース(C:\Program Files\Microsoft..)に入れればよいと思います。 ただ、分りやすいHPは分りませんね。見ようみまねで覚えるのだと思います。単に、xla のアドイン型に換えて、不都合が出れば、その部分を直すようなことをし、試行錯誤で最初は作り上げるものでしょうね。Personal.xls などと変わらないと思います。
補足
Wendy02さま、いつもありがとうございます。 ちょっと勉強不足すぎました。ようやくアドインの意味もわかりました。 少し勉強する時間をください。 ちょっと試行錯誤してみます。
- ta123
- ベストアンサー率51% (95/186)
アップデートする際の条件が分かりませんが、以下の2方法があると思います。 案1)新規マクロをXXX.bas形式でエクスポートし、各日報ファイルにインポートする。 (VBEのファイル -> ファイルのインポート、エクスポートを利用) 案2)改版した日報ファイルに既存の日報ファイルのシートをコピーする。
補足
ta123さま早速のご回答ありがとうございます。 2)は、シートの設定上、利用することができません。 (一部セルに上書きすると値が変わる設定があるため) 1)をマクロで操作することはできるのでしょうか? 複数の人間が利用するのでファイルのインポート、エクスポートができないことが考えられます。 もし、お時間がございましたらよろしくお願いします。
補足
hana-hana3 さま早速のご回答ありがとうございます。 ご指摘いただき巻いたとおりアドイン型式でがんばりたいと思います。 少し勉強しますので、またよろしくお願いします。 >BASの読込機能(テキスト読込)とモジュールの書き込み機能(行単位書き込み)を備えなくてはいけないので面倒 の意味もよくわかりました。 ありがとうございます。