いつもお世話になります。
以下のようなVBAを作成しました。
sub test()
Sheets(Array("追加テンプレート", "入庫", "出庫", "在庫")).Select
Sheets("在庫").Activate
Sheets(Array("追加テンプレート", "入庫", "出庫", "在庫")).Copy
Sheets("在庫").Activate
ActiveWorkbook.SaveAs Filename:= _
"D:\" + CStr(Month(Date) + 1) + "月度在庫表", FileFormat:=xlNormal,Password:="", WriteResPassword:="", ReadOnlyRecommended:=False,CreateBackup:=False
end sub
新しく作成したブックに標準モジュールとフォームが
コピーされません。
ほかにVBAの記述が必要かと思いますが、
本をひっくり返しても見つかりませんでした。
みなさま宜しくお願いいたします。
No.7
- 回答日時:
KenKenSPさん、こんばんは。
いつも勉強させていただいています。
>知っておくと何かと VBA モジュールの操作は便利なコードですよ
仰るとおりです。
当方もたまーに遊び程度ですがそれらについては利用しています。
現在使用中のコードへの追加削除とか
コマンドボタンの追加消去に伴うイベントの追加削除等々。
それはそうとして、
今回のはKenKenSPさんの回答がどうのこうの
という意味で回答したわけではありませんので
その辺りのことはご理解いただければと思います。
これからも目から鱗の回答を期待しております。
No.6
- 回答日時:
> VBAでモジュールやフォームをコピーしたいのですが、
というご要望のサンプルにはなってると思うので。
> これだけで十分目的は達せられると思うのですが・・・(^^;;;
その通りです...ね(^^; まあ、知っておくと何かと VBA モジュールの
操作は便利なコードですよ。
No.5
- 回答日時:
sub test()
ActiveWorkbook.SaveAs Filename:= "D:\" + CStr(Month(Date) + 1) + "月度在庫表"
End Sub
これだけで十分目的は達せられると思うのですが・・・(^^;;;
おっしゃるとおりです・・・
肝心なところが頭の中から抜けていて、
みなさまのお時間を取ってしまいました。
ご回答ありがとうございました。
No.4
- 回答日時:
こんばんは。
KenKen_SP です。下記サンプルは、VBA プロジェクトが保護されていると失敗します。また、
Excel2002 以上の場合は、
[ツール]-[マクロ]-[セキュリティー]-[信頼のおける発行元]
において、
[Visual Basic プロジェクトへのアクセスを信頼する]
にチェックを入れておく必要があります。
# Wendy02 さんのアドイン化したらどうか...というのは私も同感です。
Sub Sample()
Dim vShNames As Variant
Dim Wb As Workbook
Dim sMsg As String
Dim lRet As Long
vShNames = Array("追加テンプレート", "入庫", "出庫", "在庫")
On Error Resume Next
ThisWorkbook.Sheets(vShNames).Copy
Set Wb = ActiveWorkbook
Wb.Sheets("在庫").Activate
lRet = CopyVBAModule(ThisWorkbook, Wb)
If lRet = 0 Then
MsgBox "モジュールのコピー中にエラーが発生しました" & vbLf _
& "全てまたは一部のモジュールがコピーされてません", vbCritical
End If
Wb.SaveAs Filename:="D:\" & CStr(Month(Date) + 1) & "月度在庫表.xls"
Set Wb = Nothing
End Sub
' // VBA モジュール(シートモジュール除く)を他ブックへコピーします
Private Function CopyVBAModule( _
ByVal WbSrc As Workbook, _
ByVal WbDst As Workbook _
) As Long
' 引 数:WbSrc コピー元ワークブック オブジェクト
' 引 数:WbDst コピー先ワークブック オブジェクト
' 戻り値:成功 コピーしたモジュールの数 失敗 0
Dim sPath As String
Dim sFile As String
Dim sCode As String
Dim VBC As Object ' VBComponent
Dim lCount As Long
INIT:
sPath = WbSrc.Path
If sPath = "" Then sPath = Environ("tmp")
MAIN:
On Error GoTo ERROR_COPYMODULE
For Each VBC In WbSrc.VBProject.VBComponents
Select Case VBC.Type
Case 1 To 3: ' 1:Module 2:Class 3:Form -----------------------------
sFile = sPath & "\" & VBC.Name
' Export Module
VBC.Export Filename:=sFile
' Import Module
WbDst.VBProject.VBComponents.Import Filename:=sFile
' Delete Exported Module File
Kill VBC.Name
If VBC.Type = 3 Then
Kill VBC.Name & ".frx"
End If
lCount = lCount + 1
Case 100: ' 100:Sheet or ThisWorkbook ------------------------------
If VBC.Name = "ThisWorkbook" Then
With WbSrc.VBProject.VBComponents("ThisWorkbook").CodeModule
sCode = .Lines(1, .CountOfLines)
End With
With WbDst.VBProject.VBComponents("ThisWorkbook").CodeModule
.DeleteLines 1, .CountOfLines
.InsertLines 1, sCode
End With
lCount = lCount + 1
End If
End Select
Next
TERMINATE:
On Error GoTo 0
CopyVBAModule = lCount
Exit Function
ERROR_COPYMODULE:
CopyVBAModule = 0
End Function
>VBA プロジェクトが保護されていると失敗します。
ネットで巡回していても
VBAプロジェクトを使用するコードがあったのですが、
ことごとく、失敗してしまっていました。
原因がわかったと同時に
すばらしいコードをありがとうございます。
今回はシンプルにブックごとコピーして
目的を達成したいと思います。
ありがとうございました。
No.3
- 回答日時:
こんばんは。
VBAで、Module も UserFomr もコピーは出来ますが、
ただ、ざっと見たかんじ、次の月に使うという内容のようです。
>"D:\" + CStr(Month(Date) + 1) + "月度在庫表"
もし必要なら、そのマクロを、別のブックに移して、そのブックをアドイン形式にすればよいのではありませんか?同じマクロをコピーして、次の月に使う必要性はないと思います。ただ、アドインは、ThisWorkbook ではありませんから、ActiveWorkbook などとして書き換えなくてはなりません。
No.1
- 回答日時:
表示されているなら左上に一覧(プロジェクトエクスプローラ)があると思いますが
ここでフォームやモジュールを選択して右クリックで
エクスポートを選択して保存してください。
新しいブックでは「挿入」「モジュール」、「挿入」「フォーム」でインポートしてください。
各シート固有のVBAはコピーして貼り付けですね。
面倒なら不要なデータを削除したブックを、名前を付けて保存でテンプレートとして保存してください。
「ファイル」「新規作成」のダイアログで選択できます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) マクロで最終行から上に検索を逆にしたい 1 2022/05/17 18:27
- Visual Basic(VBA) 別ブックからシートのコピー 3 2022/04/01 20:07
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/06/01 14:45
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/11 12:55
- Visual Basic(VBA) エクセルのマクロについて教えてください。 5 2023/06/02 08:44
- その他(Microsoft Office) Excelのマクロについて教えてください。 1 2022/03/25 10:03
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/03/08 09:08
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/03/25 08:33
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/13 08:41
このQ&Aを見た人はこんなQ&Aも見ています
-
「環境が人を育てる」って本当?環境によって人格や生き方は本当に変わるのか
環境が人生に与える影響は実際どれほどのものなのか、専門家の田宮由美さんに伺った。
-
VBA This Workbookモジュールを別ファイルにコピーする方法
Visual Basic(VBA)
-
エクセルのvbaにて thisworkbookに記載のマクロを他のブックにマクロにて自動コピー出来る
Excel(エクセル)
-
【ExcelVBA】マクロの入ったシートをコピーしても新しいシート内でマクロを動作させるには?
Excel(エクセル)
-
-
4
ExcelVBAで、ユーザーフォームを新規Bookにコピーしたい
IT・エンジニアリング
-
5
エクセルVBAで作成した別ブックにVBAを記述したい
Access(アクセス)
-
6
マクロをマクロを使ってコピーしたい
その他(Microsoft Office)
-
7
EXCELのVBAでシートコピーをしたとき元のマクロを削除するには?
Excel(エクセル)
-
8
【Excel VBA】ネットワーク上の共有フォルダにあるExcelを開く
Excel(エクセル)
-
9
VBA シートをコピー後、ボタンにマクロ登録
Excel(エクセル)
-
10
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
11
Excel VBAで同じフォルダ内のファイルを開くには?
Excel(エクセル)
-
12
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
13
標準モジュールを削除したい。(VBA)
Access(アクセス)
-
14
特定のシートの削除を禁止したい(ブックの保護でなく)
Excel(エクセル)
-
15
エクセルVBA 「Application.Run」について
Excel(エクセル)
-
16
名前をつけて保存した後、元のファイルに戻るには
その他(コンピューター・テクノロジー)
-
17
エクセルVBAでUserFormを起動した時
Excel(エクセル)
-
18
Excel VBAでのWorksheet_Changeが動作しない原因
Excel(エクセル)
-
19
Excelで2つのデータの突合せをしたいです
Excel(エクセル)
-
20
【Excel VBA】マクロボタンを表のスクロールやフィルタに左右されず固定できないですか?
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの選択範囲以外を削除...
-
Excel 関数を使ってデータと一...
-
Excelの行をコピーして貼り付け...
-
【VBA】コピー&複数個所のペー...
-
EXCELのVBAでシートコピーをし...
-
ページの設定を別シートにコピ...
-
エクセルの1シートの内容を複...
-
Excel 数式の保護をしたセルを...
-
ExcelVBAで、ユーザーフォーム...
-
EXCELで別のブックから式をコピ...
-
【エクセル】プルダウン設定の...
-
エクセルVBA 1行飛ばしで転記す...
-
【Excel VBA】シートコピー時、...
-
エクセルのページをシートごと...
-
【Excel】数式をそのまま他のシ...
-
VBA シートをコピー後、ボタン...
-
Excel シートのコピーの際、ペ...
-
Excelシートを分割して新シート...
-
標準モジュール、フォームを別...
-
エクセルでシートを「移動また...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルの選択範囲以外を削除...
-
Excel 関数を使ってデータと一...
-
EXCELのVBAでシートコピーをし...
-
Excelの行をコピーして貼り付け...
-
【Excel】数式をそのまま他のシ...
-
EXCELで別のブックから式をコピ...
-
【VBA】コピー&複数個所のペー...
-
エクセルの1シートの内容を複...
-
エクセルシートを別のエクセル...
-
PDFファイルをコピーしてエクセ...
-
CSVファイルについて質問です。
-
Excel 数式の保護をしたセルを...
-
【エクセル】プルダウン設定の...
-
【Excel VBA】シートコピー時、...
-
VBA シートをコピー後、ボタン...
-
エクセルVBA 1行飛ばしで転記す...
-
Excel シートのコピーの際、ペ...
-
エクセルで、開くのに時間のか...
-
Excel シートに別のExcelシート...
-
エクセルでシートを「移動また...
おすすめ情報