マクロ内からのマクロの削除(Microsoft Excel)
Geneは、マクロ内からマクロを削除する方法を求めました。彼は、マクロを使用してhttp://www.formville.com/C17_free-purchase-orders.html [注文書]をまとめる大きなワークシートを持っています。
最後のステップとして、マクロは、完成した注文書に不要になった元のデータを削除します。この簡素化されたワークブックは、新しい名前で保存されます。 Geneは、SelectionChangeイベントハンドラーに格納されているマクロを削除するために、保存する直前にマクロを必要とします。
これを処理する方法はいくつかあります。 1つの方法は、削除をすべて一緒に行う必要がないようにすることです。代わりに、マクロで新しいブックを作成してから、必要なデータのコピーをそのブックに転送してください。次に、新しいワークブックのデータをスライスしてダイシングし、注文書として保存できます。既存のブックのマクロがプロセス中に新しいブックにコピーされることはないため、マクロを削除することを心配する必要はありません。
現在のワークブックのすべてのワークシートを新しいワークブックにコピーするのは非常に簡単です。次のマクロは、それがどのように行われるかを示しています。
Sub CopyThisWorkbook() Dim CopiedWB As String CopiedWB = "Copy of " & ActiveWorkbook.Name Sheets.Copy ActiveWorkbook.SaveAs Filename:=CopiedWB, _ FileFormat:=xlNormal End Sub
CopyメソッドをSheetsコレクションに適用すると、アクティブなブック内のすべてのワークシートが新しいブックにコピーされ、新しいブックがアクティブになります。最後のコマンドは、新しいブックを新しい名前で保存します。
もちろん、マクロの一部を新しいブックに含める必要があるが、すべてではない場合(SelectionChangeイベントハンドラーなど)は、不要なものを削除して、新しいブックの下に保存するのがおそらく最善です。名前。次のマクロ例は、Sheet1のワークシートコードからSelectionChangeイベントハンドラーを削除する方法を示しています。
Sub DeleteProcedure() Dim VBCodeMod As CodeModule Dim StartLine As Long Dim HowManyLines As Long Set VBCodeMod = ThisWorkbook.VBProject.VBComponents("Sheet1").CodeModule With VBCodeMod StartLine = .ProcStartLine("Worksheet_SelectionChange", _ vbext_pk_Proc) HowManyLines = .ProcCountLines("Worksheet_SelectionChange", _ vbext_pk_Proc) .DeleteLines StartLine, HowManyLines End With End Sub
マクロが完了すると、ブックが保存される可能性があり、目的のマクロは保存されたファイルに含まれません。このマクロは、Chip PearsonのWebサイトで提供されている情報を基に作成されています。この手法に関する追加情報が必要な場合は、この情報を参照してください。
http://www.cpearson.com/excel/vbe.aspx
注:
このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。
_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。
このヒント(3073)は、Microsoft Excel 97、2000、2002、および2003に適用されます。