Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


2242 / 13645 ツリー ←次へ | 前へ→

【69132】標準モジュールの差し替え COO 11/5/19(木) 19:21 質問[未読]
【69136】Re:標準モジュールの差し替え UO3 11/5/20(金) 14:27 発言[未読]
【69141】Re:標準モジュールの差し替え neptune 11/5/20(金) 15:36 発言[未読]
【69190】Re:標準モジュールの差し替え COO 11/5/27(金) 21:47 質問[未読]
【69191】Re:標準モジュールの差し替え とおりすがり 11/5/27(金) 23:12 回答[未読]
【69192】Re:標準モジュールの差し替え すどおり 11/5/27(金) 23:55 発言[未読]
【69193】Re:標準モジュールの差し替え neptune 11/5/28(土) 0:44 回答[未読]

【69132】標準モジュールの差し替え
質問  COO  - 11/5/19(木) 19:21 -

引用なし
パスワード
   A.xlsの標準モジュール1と標準モジュール2にはすでにプログラムソースが書かれています。
標準モジュール1と標準モジュール2のプログラムソースを更新したいのですが、あいにく、A.xlsは70枚近くコピーされて活用されています。
すべて同じフォルダに入っているのですが。

今、B.xlsの標準モジュール1と標準モジュール2のそれぞれに、A.xls標準モジュール1のプログラムの改訂版と標準モジュール2のプログラムの改訂版を用意しています。
そして、70枚近くコピーされている『A.xlsの標準モジュール1を削除してB.xlsの標準モジュール1に変更、A.xlsの標準モジュール2を削除してB.xlsの標準モジュール2に変更』したいのですが『』の部分の書き方が分かりません。
お手数ですが、教えていただけませんか?
70枚近くというループの部分は私でもソースを書けますので大丈夫です。
よろしくお願いいたします。

【69136】Re:標準モジュールの差し替え
発言  UO3  - 11/5/20(金) 14:27 -

引用なし
パスワード
   ▼COO さん:

レスがつきませんねぇ。
たぶん・・つかないんじゃないかな?
これって、マクロウィルス手法の基本になっちゃいますから。
やるなら VBIDE あたりでググって、自助努力で。

それより、
A.xlsは70枚近くコピーされて活用されています。

これは、マクロの配布の課題として、結構、様々なところで取り上げられていますが
データブックとマクロブックを同じにすることからこの困難がでてきます。

これからは、データブックとマクロブックを分離して、マクロブックで、目的の
データブックを指定して読み込んで処理するなり、目的のデータブックを手動で
開いておいて、ActiveWorkbookに対して処理するなり、いずれにしてもデータブックに
マクロを持たせない運用を考えられたらよろしいかと思います。
そうしておけば、マクロブックを1つ、リプレースすればしまいですから。

【69141】Re:標準モジュールの差し替え
発言  neptune  - 11/5/20(金) 15:36 -

引用なし
パスワード
   ▼COO さん:
UO3さんのご指摘とご提案に一票。

お邪魔しました。

【69190】Re:標準モジュールの差し替え
質問  COO  - 11/5/27(金) 21:47 -

引用なし
パスワード
   回答いただきありがとうございました。
ただ、業務上どうしても対応しないといけないことなので、いろいろと調べました。
そうしたら、あるホームページでこんなサンプルコードを見つけました。


Sub main()
  If import_mdl(ThisWorkbook, "C:\Documents and Settings\Tadaaki\デスクトップ\Module2.bas") = 0 Then
   MsgBox "インポート成功"
   End If
End Sub
'==================================================================
Function import_mdl(wk As Workbook, import_flnm As String) As Long
  On Error Resume Next
  import_mdl = 0
  wk.VBProject.VBComponents.Import import_flnm
  If Err.Number <> 0 Then
   import_mdl = Err.Number
   End If
End Function


最終的にやりたいことは、デスクトップ上にB.xlsのMoudle2をエクスポートしておき、それをA.xlsのModule5として取り込みたいのです。
練習のために、新規ブック(C.xls)のModudl1に上記のプログラムを貼り付け、mainマクロを実行することでデスクトップ上のModule2をC.xlsのModule2として取り込もうと考えています。
しかし、期待した結果が得られません。
じゅうぶんにコードを理解できてないためと思いますが、上記プログラムはどういう操作をするものでしょうか?
また、このプログラムを応用して私が最終的に実行したい
『デスクトップ上にB.xlsのMoudle2をエクスポートしておき、それをA.xlsのModule5として取り込みたいのです』は可能でしょうか?

【69191】Re:標準モジュールの差し替え
回答  とおりすがり  - 11/5/27(金) 23:12 -

引用なし
パスワード
   だから、ウイルス作成の手助けになるような質問するな。

【69192】Re:標準モジュールの差し替え
発言  すどおり  - 11/5/27(金) 23:55 -

引用なし
パスワード
   ▼とおりすがり さん:
>だから、ウイルス作成の手助けになるような質問するな。

言い方はキツイですが、
この手の質問は、どのサイトに行っても回答が付かないと
思ったほうがいいでしょうね。

回答を付けないってのが、暗黙のルールになっていますから。
実験しまくって、自分でモノにするしかないですね。

70個ものファイルを更新しなければいけないなんて、まともな
運用ではないですね。

通常はデータを持たない他bookを操作するだけの為の親Bookを一つ
だけ作り、変更があった場合には親Bookだけを差し替えるってのが
一般的な作り方ですよ。

親bookを作りこめば、他Bookのイベントも捕まえられますから。

あなたが、増やしてしまった訳ではないかもしれませんが、
これ以上ファイルを増やさない為にも、早急に手を打たれる事を
強くお勧めします。

【69193】Re:標準モジュールの差し替え
回答  neptune  - 11/5/28(土) 0:44 -

引用なし
パスワード
   ▼COO さん:
>回答いただきありがとうございました。
>ただ、業務上どうしても対応しないといけないことなので、いろいろと調べました。
そうなら、余計の事データとプログラムを分ける事をお勧めします。
・AddInなり、計算用Bookを作り、配布。データ移行用のBookを作成配布
・データ移行用のプログラムを実行し、データ専用のBookを作成。
・以降AddInなり、計算用Bookで作業を行う
のがまっとうな方法で、安全な方法です。
業務上使用するなら安全は確実なものでなければなりません。


それにもう一つ言えば、OfficeXP以降はセキュリティが厳しくなってますから
鬱陶しそうです。また、O/S自体のセキュリティも厳しくなっているし、
ウイルスソフトに警告されるとか、削除されるとかの可能性すらありますけど
そのあたりは考えてますか?

要するに現在の運用は業務に使うような運用方法ではないという事です。

2242 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free