ここから本文です

文字数制限で回答できないのでこちらから VBAでシートにコードをコピーする方法...

sta********さん

2017/7/1815:23:32

文字数制限で回答できないのでこちらから

VBAでシートにコードをコピーする方法はありましたね。。

まず下のサイトの「VBEオブジェクトの使用準備」を参考に、参照設定と「VBAプロジェクト オブジェクトモデルへのアクセスを信頼する」オプションの設定を行ってください。
http://excelappwithvba.web.fc2.com/generating_report_sheet/attachin...

次に、下のコードを標準モジュールに置いてください。
Worksheet_Change が各シートにコピーされれば成功です。
シートのオブジェクト名には、必ず"Sheet"が含まれるようにしてください。
(シートかどうか判別するため)

Public Sub DistCode()

Dim moduleName As String
Dim procName As String

moduleName = "Module1" ’モジュール名はここに設定
procName = "Worksheet_Change"

Dim i As Integer
Dim k As Integer
Dim item As VBComponent
Dim srcMod As VBComponent
Dim flag As Boolean

For Each item In ThisWorkbook.VBProject.VBComponents
If InStr(item.Name, "Sheet") Then

flag = False

With ThisWorkbook.VBProject.VBComponents(item.Name).CodeModule
If .CountOfLines > 1 Then
For k = 1 To .CountOfLines
If InStr(.ProcOfLine(k, 0), procName) > 0 Then
flag = True
Exit For
End If
Next k
End If
End With

If Not flag Then
With ThisWorkbook.VBProject.VBComponents(item.Name).CodeModule
Set srcMod = ThisWorkbook.VBProject.VBComponents(moduleName)
.InsertLines _
(.CountOfLines + 1), srcMod.CodeModule.Lines(srcMod.CodeModule.ProcBodyLine(procName, 0), srcMod.CodeModule.ProcCountLines(procName, 0))

End With
End If
End If

Next

End Sub

閲覧数:
130
回答数:
1

違反報告

ベストアンサーに選ばれた回答

aya********さん

2017/7/1819:30:06

丁寧なご回答本当にありがとうございます。

ブックを1つ新規で作成し、
そのブックの標準モジュールに
教えて頂いたコードをそのまま貼り付けましたが、
Dim item As VBComponentsのところで

「コンパイルエラー:
ユーザー定義型は定義されていません。」

と表示されエラーになってしまいます。

私のやり方に問題ありましたでしょうか。
大変恐縮ですが、
ご確認の程宜しくお願い致します。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

質問した人からのコメント

2017/7/19 21:35:14

私も勉強になりました^^

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる