Excel VBA質問箱 IV

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

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


11829 / 13644 ツリー ←次へ | 前へ→

【13842】マクロの内容をコピーについて WAKO 04/5/14(金) 23:05 質問[未読]
【13844】Re:マクロの内容をコピーについて ちゃっぴ 04/5/15(土) 0:46 回答[未読]
【13846】Re:マクロの内容をコピーについて ちゃっぴ 04/5/15(土) 2:32 発言[未読]
【13866】Re:マクロの内容をコピーについて WAKO 04/5/15(土) 14:21 お礼[未読]
【13850】Re:マクロの内容をコピーについて ichinose 04/5/15(土) 8:21 発言[未読]
【13857】Re:マクロの内容をコピーについて WAKO 04/5/15(土) 10:38 回答[未読]
【13859】Re:マクロの内容をコピーについて ちゃっぴ 04/5/15(土) 12:03 回答[未読]

【13842】マクロの内容をコピーについて
質問  WAKO  - 04/5/14(金) 23:05 -

引用なし
パスワード
   シート3にマクロがはいっているのですが、
これをマクロを使って(OPENする時)、シート1にコピーする事はできるでしょうか。
シートコピー以外の方法です。
どなたか知っていましたら教えて下さい。

【13844】Re:マクロの内容をコピーについて
回答  ちゃっぴ E-MAIL  - 04/5/15(土) 0:46 -

引用なし
パスワード
   >シート3にマクロがはいっているのですが、
>これをマクロを使って(OPENする時)、シート1にコピーする事はできるでしょうか。
>シートコピー以外の方法です。
>どなたか知っていましたら教えて下さい。

出来るみたいです。
VBProject.VBComponents.Item("Sheet3").CodeModule
でSheet3のモジュールを参照できるみたいです。

場合によってはウイルス検知ソフトに引っかかるみたいです。

すいません、私もやったことがないので下記を参照してください。
http://www.moreexcellent.com/excel/macro/vbproject.htm

ヘルプにも載ってないみたい…

【13846】Re:マクロの内容をコピーについて
発言  ちゃっぴ E-MAIL  - 04/5/15(土) 2:32 -

引用なし
パスワード
   >ヘルプにも載ってないみたい…

訂正します。載ってました。

【13850】Re:マクロの内容をコピーについて
発言  ichinose  - 04/5/15(土) 8:21 -

引用なし
パスワード
   ▼WAKO さん、ちゃっぴさん
おはようございます。

>シート3にマクロがはいっているのですが、
>これをマクロを使って(OPENする時)、シート1にコピーする事はできるでしょうか。
>シートコピー以外の方法です。
>どなたか知っていましたら教えて下さい。
'=============================================================
Sub main()
  Call copy_code(ThisWorkbook, "sheet3", "sheet1")
End Sub
'==================================================================
Sub copy_code(bk As Workbook, mdlnm1 As String, mdlnm2 As String)
'対象ブックのコードモジュール内容を他のコードモジュールにコピーする
'bk : 操作対象ブック
' mdlnm1  コピー元コンポーネント名
' mdlnm2  コピー先コンポーネント名
  Dim mdlcode As String
  With bk.VBProject.VBComponents(mdlnm1).CodeModule
   mdlcode = .Lines(1, .CountOfLines)
   End With
  With bk.VBProject.VBComponents(mdlnm2).CodeModule
   .DeleteLines 1, .CountOfLines
   .InsertLines 1, mdlcode
   End With
End Sub

上記のコードでそれらしいことは出来ると思いますが、

↓のご質問と関連していますよね?

http://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=13840;id=excel

だとしたら、はっきりは言えませんが、他の方法も模索された方がよいかもしれませんよ

どんなマクロをコピーしたいのかコード例を提示してみて下さい
(全部なくてもいいので)。

【13857】Re:マクロの内容をコピーについて
回答  WAKO  - 04/5/15(土) 10:38 -

引用なし
パスワード
   ichinose さん 回答ありがとうございます。
そうです、この質問(http://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=13840;id=excel)と関連しています。
具体的には、そのエクセルには、
シート2とシート3しかなく、
シート3にコマンドボタンが貼っています。
コマンドボタンはの中身は、クリックイベントで、
call errchk と書かれているだけで、errchkの中身は
モジュールに記述しています。
処理の流れで、
このマクロがopen した時に、あるエクセル(マクロ無し)を起動して
その中身を、マクロエクセルのシート1にシートコピーして、シート1を作成
します。(シートコピーでないとだめなのです。データ量が
多い場合があるので、copy,pasteだと遅いです)
このエクセル(マクロ無し)をcloseします。
次に、シート3のコマンドボタンを、シート1に貼り付けたい
という主旨です。(フォームを使うのはやめてくれといわれました)
それで、シート3にあるコマンドボタンをコピーしてシート1に
貼り付けたいということです。

逆に、エクセル(マクロ無し)に対して、マクロエクセルのコマンドボタン
(マクロ入り)を貼り付けてもいいです。この場合
貼り付けた後、マクロエクセルはcloseします。

できるのでしょうか。
知っていましたら、教えて下さい。


▼ichinose さん:
>▼WAKO さん、ちゃっぴさん
>おはようございます。
>
>>シート3にマクロがはいっているのですが、
>>これをマクロを使って(OPENする時)、シート1にコピーする事はできるでしょうか。
>>シートコピー以外の方法です。
>>どなたか知っていましたら教えて下さい。
>'=============================================================
>Sub main()
>  Call copy_code(ThisWorkbook, "sheet3", "sheet1")
>End Sub
>'==================================================================
>Sub copy_code(bk As Workbook, mdlnm1 As String, mdlnm2 As String)
>'対象ブックのコードモジュール内容を他のコードモジュールにコピーする
>'bk : 操作対象ブック
>' mdlnm1  コピー元コンポーネント名
>' mdlnm2  コピー先コンポーネント名
>  Dim mdlcode As String
>  With bk.VBProject.VBComponents(mdlnm1).CodeModule
>   mdlcode = .Lines(1, .CountOfLines)
>   End With
>  With bk.VBProject.VBComponents(mdlnm2).CodeModule
>   .DeleteLines 1, .CountOfLines
>   .InsertLines 1, mdlcode
>   End With
>End Sub
>
>上記のコードでそれらしいことは出来ると思いますが、
>
>↓のご質問と関連していますよね?
>
>http://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=13840;id=excel
>
>だとしたら、はっきりは言えませんが、他の方法も模索された方がよいかもしれませんよ
>
>どんなマクロをコピーしたいのかコード例を提示してみて下さい
>(全部なくてもいいので)。

【13859】Re:マクロの内容をコピーについて
回答  ちゃっぴ E-MAIL  - 04/5/15(土) 12:03 -

引用なし
パスワード
   >このマクロがopen した時に、あるエクセル(マクロ無し)を起動して
>その中身を、マクロエクセルのシート1にシートコピーして、シート1を作成
>します。(シートコピーでないとだめなのです。データ量が
>多い場合があるので、copy,pasteだと遅いです)

マクロなしのデータだけをコピーするのですよね〜♪
データをブックでやり取りするのをやめて、テキスト(バイナリ)で受渡するようにすれば?

容量も節約できるし、高速化しますよ〜♪

要するにデータ作成元のエクセルブックにテキスト書き込み用のマクロ
で集計用のエクセルブックに同読込用マクロ用意しておけばよいのでは?

コードをいじるマクロは推奨しません。マクロウイルスを助長することになるので

【13866】Re:マクロの内容をコピーについて
お礼  WAKO  - 04/5/15(土) 14:21 -

引用なし
パスワード
   ▼ちゃっぴ さん:
ありがとうございます。
大変役にたちました。
素人なので、今後もよろしくお願いします。


>>シート3にマクロがはいっているのですが、
>>これをマクロを使って(OPENする時)、シート1にコピーする事はできるでしょうか。
>>シートコピー以外の方法です。
>>どなたか知っていましたら教えて下さい。
>
>出来るみたいです。
>VBProject.VBComponents.Item("Sheet3").CodeModule
>でSheet3のモジュールを参照できるみたいです。
>
>場合によってはウイルス検知ソフトに引っかかるみたいです。
>
>すいません、私もやったことがないので下記を参照してください。
>http://www.moreexcellent.com/excel/macro/vbproject.htm
>
>ヘルプにも載ってないみたい…

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