Peterは定期的に、マスターワークシートを新しいワークブックのコピーにコピーする必要があります。彼はVBAでこれをうまく行うことができます。ただし、彼がコピーしているワークシートにはコードが関連付けられており、コードもコピーされます。

Peterは、コピー内のコードを望んでいませんが、オリジナルのままにしておくことを望んでいます。彼は、自分のマクロで、コピーしたばかりのワークシートのワークシートコードを削除する方法があるかどうか疑問に思います。

これをどのように行うかは、完成したブック(コピー先のブック)をどのように表示するかによって異なります。主に、完成したワークブックにはマクロ(任意のマクロ)が含まれますか?答えが「いいえ」の場合、マクロは含まれていません。新しいワークブックをXLSX形式で保存することで、タスクを簡単に実行できます。そうすれば、Excelがすべてのマクロを削除します。これを行うには、ブックを保存するときに次のような行をコードに含めます。

ActiveWorkbook.SaveAs FileName:="MyExcelFile.xlsx", _   FileFormat:=xlOpenXMLWorkbook

ただし、ワークシートコードのみを削除し、他のマクロコードをそのままにして新しいブックを保存する場合は、別の方法を使用する必要があります。この場合、マクロに次の行を含めることができます。

ActiveWorkbook.VBProject.VBComponents("Sheet1")

これは、新しいブックがアクティブなブックであり、コードを削除するワークシートの名前がSheet1であることを前提としています。これらの行を使用して同じタスクを実行することもできます:

wsName = ActiveSheet.CodeName With ThisWorkbook.VBProject.VBComponents(wsName).CodeModule     .DeleteLines 1, .CountOfLines End With

wsNameは文字列変数として宣言する必要があることに注意してください。

プログラムでさまざまなコードモジュールに影響を与えることができる他の方法のボートロードについては、ここでチップピアソンの優れた情報を参照することで間違いはありません:

http://cpearson.com/excel/vbe.aspx

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(7612)は、Microsoft Excel 2007、2010、2013、2016、2019、およびOffice365のExcelに適用されます。