いつもお世話になります。
以下のような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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
都道府県穴埋めゲーム
都道府県の名前を1人1つずつ投稿してください。全ての都道府県が出たら締め切ります!
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
VBA This Workbookモジュールを別ファイルにコピーする方法
Visual Basic(VBA)
-
エクセルのvbaにて thisworkbookに記載のマクロを他のブックにマクロにて自動コピー出来る
Excel(エクセル)
-
ExcelVBAで、ユーザーフォームを新規Bookにコピーしたい
IT・エンジニアリング
-
-
4
【ExcelVBA】マクロの入ったシートをコピーしても新しいシート内でマクロを動作させるには?
Excel(エクセル)
-
5
エクセルVBAで作成した別ブックにVBAを記述したい
Access(アクセス)
-
6
マクロをマクロを使ってコピーしたい
その他(Microsoft Office)
-
7
EXCELのVBAでシートコピーをしたとき元のマクロを削除するには?
Excel(エクセル)
-
8
Excelで2つのデータの突合せをしたいです
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel 関数を使ってデータと一...
-
エクセルの選択範囲以外を削除...
-
エクセルVBA 1行飛ばしで転記す...
-
ExcelVBAで、ユーザーフォーム...
-
【Excel VBA】シートコピー時、...
-
EXCELで別のブックから式をコピ...
-
エクセルの1シートの内容を複...
-
Excel 数式の保護をしたセルを...
-
EXCELのVBAでシートコピーをし...
-
EXCELファイルをコピーすると終...
-
【VBA】コピー&複数個所のペー...
-
エクセルマクロで上書きして貼...
-
エクセルのワークシートをUSBメ...
-
ExcelのBook内のシートを一枚だ...
-
EXCEL VBA シートをコピーする...
-
エクセルの2枚のシートを1枚に...
-
エクセル2000 操作を元に...
-
【エクセル】プルダウン設定の...
-
エクセルシートを別のエクセル...
-
VBA 先頭文字の0(ゼロ)...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルの選択範囲以外を削除...
-
Excel 関数を使ってデータと一...
-
EXCELのVBAでシートコピーをし...
-
Excelの行をコピーして貼り付け...
-
EXCELで別のブックから式をコピ...
-
【VBA】コピー&複数個所のペー...
-
Excel 数式の保護をしたセルを...
-
エクセルVBA 1行飛ばしで転記す...
-
エクセルの1シートの内容を複...
-
Excel シートのコピーの際、ペ...
-
エクセルでシートを「移動また...
-
エクセルの表を作ってるんですが
-
PDFファイルをコピーしてエクセ...
-
エクセルのワークシートをUSBメ...
-
エクセルのページをシートごと...
-
VBA シートをコピー後、ボタン...
-
【Excel】数式をそのまま他のシ...
-
アクセスの画面をプリントスク...
-
ExcelVBAで、ユーザーフォーム...
-
【Excel VBA】シートコピー時、...
おすすめ情報