- ベストアンサー
EXCELのVBAでシートコピーをしたとき元のマクロを削除するには?
VBAのマクロでシートのコピーをしたいのですが、元のシートにはVBAのコードが含まれています。コピーするのはデータだけのコピーが必要で、マクロ自体は必要ないのですが、それを削除するコードはどのように書いたらいいのでしょうか? どうしてもコピーしたファイルを開くと「マクロが含まれています」という確認メッセージが出てしまうのですが、それもなくしたいのです。 シートにフォームのボタンが配置されている場合も同様に、そのボタン自体をなくした状態でコピーを行いたいのですが・・・。プログラムで行うのは不可能なのでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
No2です。 サンプルコードを書いてみました。 「オリジナル」という名前のシートを別ブックとしてコピペ保存します。 Sub サンプル() Dim sc As Integer sc = Application.SheetsInNewWorkbook Application.SheetsInNewWorkbook = 1 ThisWorkbook.Sheets("オリジナル").Cells.Copy 'コピー Workbooks.Add 'ブック追加 Sheets("Sheet1").Range("A1").PasteSpecial Paste:=xlValues '値貼り付け Sheets("Sheet1").Range("A1").PasteSpecial Paste:=xlFormats '書式貼り付け Sheets("Sheet1").Name = "コピー" Application.CutCopyMode = False Application.SheetsInNewWorkbook = sc ActiveWorkbook.Close ThisWorkbook.Activate End Sub
その他の回答 (2)
- merlionXX
- ベストアンサー率48% (1930/4007)
エクセル2003以降はセキュリティの問題からVBAでVBAのモジュールをいじれなくなったと聞いています。 なので、現在は「シートの移動またはコピー」を使って複製しているのでしょうから、それを、新しいブックのワークシートにコピー&ペーストする方法に変えればいいと思います。単に数値や文字データだけであれば「値」貼り付けでボタン等も排除できます。数式や書式もコピペしたければ「数式貼り付け」と「書式貼り付け」でOKです。
- a-gucci
- ベストアンサー率45% (5/11)
保存するマクロをそのブックではなくPERSONALブックに 保存すればシートのコピーするブックを開いても 確認メッセージは出ないのでそうすればどうでしょう?
お礼
サンプルコードまでどうもありがとうございました! すごーく助かりました。 今日の午後は仕事がここで止まっていたのですが、すっきりしました!!