
VBAのモジュールについて教えて下さい。
ブック1のコードを全てブック2のコードへ上書きをしたいです。
シートモジュール、ユーザーフォーム、標準モジュール全てです。
なぜかと言うと、ブック1はマスタとしてマクロの作り込みのみ行います。
ブック2というのは実際に業務で使うブックで同様のブックがいくつもあります。
マクロの修正があった時に、全てのブックを1つ1つ修正するのは大変なので、ブック1というマスタのコードを一括で他のブックへ上書きしたいのです。
ただ、ブック1とブック2はシートの数も名前も違います。
標準モジュールやユーザーフォームはある程度できたのですが、シートモジュールがクラスモジュールとしてインポートされる為、シートモジュールへ入れる事が出来ません。
どなたか御教授下さい。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
自ブックのコードを読むところから説明しないといけないかな。
#2は、全部でないけど
自ブックのDocument モジュールの読込は、下記を参考にしてください。
配列に入れるなどして読み込んだ方が書き込み時、処理速度としてよいかと思います。
また、#2などでモジュールに書き込む際は、VBAの弱点、一つずつの書き込みを行うので
ブックの数、モジュール数、コードの量でスタックする恐れがありますので
メイン処理をサブに出すなどして、少しでもメモリ確保(解放)した方が良いと思います。
Sub MyCode_Substitution()
Dim Target As Workbook, i As Long, strCo
Dim oVBC As VBComponent
Set Target = ThisWorkbook
For Each oVBC In Target.VBProject.VBComponents
If oVBC.Type = 100 Then
With Target.VBProject.VBComponents(oVBC.Name).CodeModule
For i = 1 To .CountOfLines
strCo = .Lines(i, 1)
Debug.Print strCo ’試してください。
Next i
End With
End If
Next oVBC
End Sub
読込の順番は、ThisWorkbook sheet1,,,,,です。
入力されているすべて、(空行を含む)が一行ずつ出力されます。#2と組み合わせ
他ブックのDocumentモジュールを書き換えて下さい。
ズバリ、実行するだけのコードが良いのであれば、リクエストを
しかし、>シートの数も名前も違います。
どこに書き込むか、指定しないで良いのでしょうか?
全ブックの共通モジュールは、ThisWorkbookだけですが、、、
後からこうしたい話は、無しですよ。
No.2
- 回答日時:
>ブック1というマスタのコードを一括で他のブックへ上書きしたいのです
読み飛ばしていました。
モジュールごとだと、
Workbooks("Book1.xlsm").VBProject.VBComponents("Module1").Export Book_path&Module.bas(対象モジュール)
Workbooks("Book2.xlsm").VBProject.VBComponents.Import Book_path&Module.bas
のような感じでしょうか?
しかしながら、Exportには、Typeが、1、2、3しかないようで、、まあ、Document モジュールは、
Book本体のモジュールなので当たり前かもしれません。(シートモジュールを追加する場合は、シートを作成するので)
従って、Document モジュールは一行ずつ書き替える などをする必要があります。
参考コード(一部) 別サイトに掲示したものを掲載、変数は読んでください。
ReDim Pch_Arr(0)
Pch_Arr(0) = PATH_
n = n + 1
Set fso = New FileSystemObject
On Error GoTo ErrHndl
listSubFolders fso.GetFolder(PATH_), n
If Sgn(Pch_Arr) <> 0 Then
For j = 0 To UBound(Pch_Arr)
File_Name = Dir(Pch_Arr(j) & "*" & extension)
On Error Resume Next
Do While File_Name <> ""
Set Target = Workbooks.Open(Pch_Arr(j) & File_Name)
If Target.VBProject.Protection <> 0 Then GoTo skp
For Each oVBC In Target.VBProject.VBComponents
If oVBC.Type = 100 Then
With Target.VBProject.VBComponents(oVBC.Name).CodeModule
For i = 1 To .CountOfLines
strCo = .Lines(i, 1)
書き込みコードを書く場所
End If
Next i
End With
End If
Next oVBC
skp:
Target.Save
Target.Close
File_Name = Dir()
Loop
Next j
End If
No.1
- 回答日時:
>標準モジュールやユーザーフォームはある程度できた.
のであれば、VBComponents.Nameを指定して
VBComponentsのTypeを指定するのはどうでしょう。
Document モジュール .Type = 100
クラスモジュール .Type = 2
>インポートされる為
ブック2側で実行するのではないですよね。
書き込みは、モジュールレベル?コードレベル?
取敢えず、検証しておりませんが、、、
もう少し、具体的なものを頂けると。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/01/23 11:02
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/08 15:45
- Visual Basic(VBA) VBA 複数のブックに同じ列を表示させる方法 2 2022/07/20 23:49
- Excel(エクセル) フォルダ内の全ブックのシート名を変更したい 7 2022/09/22 21:34
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/21 09:28
- Visual Basic(VBA) ブックのCOPY 4 2023/02/25 20:17
- Visual Basic(VBA) 該当セルの値を別ブックのシート名と一緒であればコピーしてほしい 1 2022/11/10 20:12
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルのオートフィルターのしぼりをクリアーしたい 2 2022/12/24 08:36
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBでグローバル変数を宣言するには
-
Form間の値の渡し方
-
Excel VBAで、ユーザーフォーム...
-
レンタルサーバーでのモジュー...
-
モジュールについて教えて下さい。
-
'Range'メソッドは失敗しました
-
モジュールとは何ですか
-
ユーザーフォーム上に表示され...
-
acwzlibとは?
-
VBA モジュールで共通に使う変...
-
モジュールからフォームのボタ...
-
レンタルサーバーのPHPの利用の...
-
エクセルVBAでシートモジュール...
-
VBAで別モジュールへの変数の受...
-
BASP21 のようなコンポーネント
-
Perlでファイルを移動させる命...
-
サーバーサイドでPerlをそのま...
-
モジュールのインストールについて
-
Perl環境移行中。(変なモジュ...
-
自作モジュールを認識しない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAで別モジュールへの変数の受...
-
ユーザー定義関数に#NAME?が返...
-
エクセルVBAでシートモジュール...
-
Excel VBAでリンク切れをチェッ...
-
Excel VBAで、ユーザーフォーム...
-
Excel VBA 定義されたプロージ...
-
VBでグローバル変数を宣言するには
-
vba userFormのSubを標準モジュ...
-
モジュールの最大数はいくつな...
-
【vba】フォームに書いてあ...
-
Excel VBA 『Call』で呼び出す...
-
VBAで旧字体を異字体に一括で変...
-
モジュールとクラスの違いって...
-
モジュールからフォームのボタ...
-
大量の標準モジュールを解放す...
-
acwzlibとは?
-
SendKeysの使い方について
-
標準モジュールを削除したい。(...
-
VBA This Workbookモジュール...
-
VBA モジュールで共通に使う変...
おすすめ情報