Excelをかなり使用している場合は、同僚からかなり大きなワークブックを入手する可能性があることをご存知でしょう。多くの場合、各ワークシートが独自のワークブックに含まれるように、ワークブックを分割することが望ましいです。これは手動で行うことができますが、多くの内訳を行う必要がある場合、プロセスはすぐに面倒になります。

この種の反復作業は、マクロにとって当然のことです。 BreakItUpと呼ばれる次のマクロは、現在のブックのワークシートに基づいて個々のブックファイルを作成します。したがって、現在のブックに25個のワークシートが含まれている場合、このマクロを実行すると、25個の個別のExcelブックファイルが作成されます。各ワークブックには1つのワークシートがあり、ワークブックの名前はワークシートの名前と同じです。

Sub BreakItUp()

Dim sht As Worksheet     Dim NFName As String     Const WBPath = "C:\"



For Each sht In ActiveWorkbook.Worksheets         sht.Copy         NFName = WBPath & sht.Name & ".xls"

ActiveWorkbook.SaveAs FileName:=NFName, _             FileFormat:=xlNormal, CreateBackup:=False         ActiveWindow.Close     Next End Sub

BreakItUpマクロは、新しいワークブックをC:ドライブのルートディレクトリに保存します。ブックを別の場所に保存する場合は、WBPath定数が作成される行を変更するだけです。

また、このマクロをクラッシュさせるのは比較的簡単であることも知っておく必要があります。たとえば、ワークシート名に「合法」ではない文字を使用した場合

ファイル名の場合、マクロはファイルを作成しようとすると無礼に停止します。もちろん、このような不正な文字をチェックして置き換えるために、マクロに簡単に変更を加えることができます。

マクロのもう1つの潜在的な落とし穴は、ワークシートと同じ名前のファイルが既に存在する場合、マクロの実行が停止することです。たとえば、MySheet1という名前のワークシートがあるとします。 MySheet1.xlsというファイルがディスク上にすでに存在する場合、ファイルを上書きしようとするとマクロは停止します。これを回避するには、ブックが保存されているディレクトリにファイル名の競合がないことを確認します。

注:

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

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

このヒント(2230)は、Microsoft Excel 97、2000、2002、および2003に適用されます。Excel(Excel 2007以降)のリボンインターフェイス用のこのヒントのバージョンは、次の場所にあります。