[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『マクロコードの修正です』(okamoto)
excelbook(名前、syuukei)についてですが 簡易ソフトでマクロを使用して作成しました。 このソフトはvbaprojectでパスワード(パスワードは5271です) を設定して保護しています フオーム及び標準モジュールに記述したコードを 修正する方法についてお願いできたらと思います。 手順は、修正用EXCELbook(名前は修正)を作成して sheet1上に、フオームコントロールボタン1を置く クリックしたら、excelbook(syuukei)を選択して、 パスワード解除
excelbook(名前、syuukei)のmodule1の中の sub kousin()及び Sub kitei()を削除して excelbook(修正)の module1に記述している同じ名の sub kousin()及び Sub kitei()をexcelbook(名前、syuukei)に挿入する。
又 フオームのUserform1の中の Private Sub CommandButton2_Click() Private Sub CommandButton3_Click() を同様に削除して挿入するです。
知人に使用させており、このような 方法で修正できたらと思います。 もっと簡易にできる方法があれば お願い申します。
Windows 7 Excel2007
>知人に使用させており、このような >方法で修正できたらと思います。
マクロを修正するのは【知人】? それとも、(okamoto) さん?
いずれにしても VBAProjectのパスワードをコードから指定することはできないと思うよ。 なので、かりにVBAProjectを書き換えるコードを書いたとしても(賛成できないけど) パスワードがかかっている限り、解除は手による操作だね。
そもそも、ここであげられた動作をさせる理由は?
>もっと簡易にできる方法があればお願い申します。
コード修正が、【知人に配布する前に】 、(okamoto) さんが行うのであれば VBE画面でパスワード解除して、(okamoto) さん自身が【知人】用にコードを変更して それを送るのが最も簡単。
(ぶらっと)
[知人]さんが使っているブックのマクロをアップデートするのが 目的だとして・・・ 修正後のマクロを含むブック(このブック自体で完動するもの)を用意。 旧ブックと新ブックを開く 旧ブックのデータ部分を新ブックに移動、またはコピー 旧ブックを閉じる データを移し終わった新ブックを旧ブック名で上書き保存 という手順が妥当じゃないでしょうか。 つまり、ワークシートの内容だけ移し変えて、旧ブックは新ブックで 上書きしてしまえば、モジュールの内容を書き換えるほどのことは ないと思います。 (ワークシートの管理の仕方によるかもしれませんが) (みやほりん)
ぶらっと様 みやほりん様 ありがとうございます
指摘いただいた方法しかないのですね! 感謝します。
VBAプログラマは、VBEを使って、VBAProject内にコードを作成し、便利なツールとして(だと思って)、 ユーザーに提供します よね? 原則、ユーザーがこのVBEを操作することはありませんし、触られても困ります よね?
VBEやVbprojectを操作するってことは、手動であれ、VBAコードで操作するであれ、基本的な 考え方は、↑と同じなんです。
http://office.microsoft.com/ja-jp/excel-help/HP010096919.aspx 現在参照不可
ここに「マクロのセキュリティ設定とそれらの効果」という記述があります。
ここの 5つ目の 「・」の 「VBA プロジェクト オブジェクト モデルへのアクセスを信頼する」 これにチェックを入れて、セキュリティレベルを下げないとVbprojectを操作するVBAコードは、実行できないようになっています。 現にサイトには、「これは開発者向けの設定です」と記述されています。
一般ユーザーに、セキュリティをレベルを下げて実行させるようなコードを提供することの危険性を 120%考慮してください、これは、プログラマが開発・メンテのツールとして、使う場合、開発者の責任において使うべき、だと私は思います。
これを前提にすると、ユーザーにメンテのためでもVbprojectを操作するコードを提供するのは、やめた方が よいでしょうね!!
又、ご自分が直すなら、Vbprojectのパスワードは、解除してから、修正用コードを実行しても大したことは ないですよね!!
もっともこれは、VBEを表示させて、パスワード解除操作を Sendkeys辺りで行っても 出来ないこともないと思いますが・・・。
コードの修正は、モジュールごとのインポートを使ってコードを置き換えてもよいでしょうね!! 今回の事象では使う・使わないはともかく、 そういうツールを作っておくと、VBAプログラマにとって、開発やメンテに便利だとは思います。
今回のokamotoさんの件で、何故、Vbprojectを使ってコードの置き換えという発想になったのでしょう?
根本の原因には、VBAコードとデータが同じブックにあることが原因ではないですか? VBAコードを変更しようとしても、元ブックは、日々、データの追加や更新があるのですから、 それをユーザーから取り上げるわけにはいきません。よって、作成した変更プログラムを 元ブックに入れ込まなければなりませんよね? この手間を惜しんでのことではないですか?
このサイトでもよく言われていることですが、 VBAコードを含んだブックとデータブックを分けてしまう構造を検討してみてはいかがですか? このようにしておけば、変更は、VBAコードを含んだブックだけ行えばよいのですから、 普通に上書きコピーを行うだけでことはすんでしまいます。
プログラミングでは、将来の変更などを考慮し、構造を十分に検討することは 必要ですよ!! これは、ブックの構成に始まり、モジュールの構造 プロシジャー構造と考えなければなりません。
>簡易ソフトでマクロを使用して作成 今は、簡単なものでも将来、結構なものに変化していくことも十分考えられますよね?
検討してみてください
ichinose
ichinose様
>変更は、VBAコードを含んだブックだけ行えばよいのですから、 >普通に上書きコピーを行うだけでことはすんでしまいます。 おっしゃる通り一番いい方法と思います そのように変更したいと思います
ありがとうございます
okamoto
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.