- 締切済み
エクセルVBAでコピー
エクセルVBAでのコピーについての質問です。 ブック1 とブック2があります。 ブック1 のSheet1 内にマクロ含むワークシートを 新規ブックにファイル名を指定して 下記のようなプログラムでコピーしようとすると (標準モジュール1の内容) Sub newfilesave() MsgBox "デスクトップの「○○」フォルダに控え○○_日付時間.xlsxファイルを生成します。" Sheets("受付仕分リスト").Copy ActiveSheet.Cells.Copy ActiveSheet.Cells.PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False ActiveSheet.Range("A1").Select 'マクロなしのエクセルデータとして名前を付け、ファイル形式も決めてデスクトップに日付を付けて保存する。。 ActiveWorkbook.SaveAs _ Filename:="C:\Users\user\Desktop\○○\○○_" & Format(Now(), "yyyymmdd_hhmm"), _ FileFormat:=xlOpenXMLWorkbook End Sub Sheet1 内にマクロの内容までコピーされてしまいます。 ブック1のレイアウトや書式などはそのままに マクロ部分だけを取り除いてコピーするには どのような流れでプログラムすればいいでしょうか? よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- kkkkkm
- ベストアンサー率66% (1725/2595)
質問のコードでしたら「受付仕分リスト」というシートしか存在しないマクロなしのブックが保存されると思います。 最後の保存時にマクロ無しのブックに保存できないというメッセージが出て「はい」で保存したのちに一度新しくできたブックを閉じて、再度開くとマクロは無くなっていると思います。 (保存したブックの方はマクロが削除されています、保存時に開いていたブックではまだマクロがあります)
- imogasi
- ベストアンサー率27% (4737/17069)
http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_800_200.html マクロを除いた配布用ブックを作成する。 に解説されている操作をして、その時、マクロの記録をとるモードで行えば、どうでしょう。 ここに載っているコードは私にはややこしく思えたので。 ーー コピー後のブックで https://macvba.net/fuyo-macro-sakujo 不要なマクロを削除する方法 も参考に。 ーー ちなみに、 VBAでVBAコードをいじくる http://officetanaka.net/excel/vba/vbe/07.htm#sample06 の With ActiveWorkbook.VBProject For Each VBC In .VBComponents If VBC.Type = 1 And _ VBC.CodeModule.CountOfDeclarationLines のようにActiveWorkbook.VBProjectのVBComponentsのCodeModuleを(VBAコードを書いて実行し)削除するとか、変更する方法もあるようですが(小生のレベルでは詳細は不案内) 普通の人に、勧める方法ではないでしょう。解説記事例も少ない。
- kon555
- ベストアンサー率51% (1844/3562)
現状はマクロ有効ブック形式での保存になっていますので、ファイル形式を fileformat:=xlworkbookdefault で指定してやれば、xlsxでの保存となり、マクロ消去した状態にできます。 ただし保存した直後、一旦ブックを閉じるまではまだマクロ有効状態ですのでご注意下さい。