[[20130510125748]] 『マクロコードの修正です』(okamoto) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『マクロコードの修正です』(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.