- ベストアンサー
Excelのシート→ブック
Excelのシート→ブック Excelに複数のシートがある状態です。 そのシートを個別のファイル名=シート名で一発で個別のブックにする方法はありますか?
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
Sub Macro1() Dim sh As Worksheet For Each sh In Worksheets sh.Copy ActiveWorkbook.SaveAs Filename:=sh.Name Workbooks(sh.Name & ".XLS").Close Next sh End Sub
その他の回答 (5)
- mt2008
- ベストアンサー率52% (885/1701)
No.4です。 失礼、新しいブック名を元ファイル名+シート名にする…と、勘違いしていました。シート名をそのままブック名でいいんですね。 7行目の sBookname(0) & "_" & を削除してください。
- mt2008
- ベストアンサー率52% (885/1701)
マクロでやるとしたらこんな感じかな? サンプルなのでエラー処理等入っていません。 Sub Sample() Dim Sht, sBookname Application.ScreenUpdating = False sBookname = Split(ThisWorkbook.Name, ".") For Each Sht In Worksheets Sht.Copy ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & sBookname(0) & "_" & Sht.Name & "." & sBookname(1) ActiveWindow.Close Next Sht Application.ScreenUpdating = True End Sub
- avanzato
- ベストアンサー率54% (52/95)
こんにちは。 エクセルの機能ではそのようなシステムはありません。 やるなら次のような方法があります。 ファイル名:Testfile.Xls シートは以下の4つ 管理用 Sheet1 Sheet2 Sheet3 の環境で標準モジュールに下記コードを追加し実行すると シート「管理用」以外のシートを個々のファイルとして保存します。 保存するファイル名はシート名を使います。 保存先はTestfile.Xlsと同じフォルダです。 Testfile.Xlsがデスクトップ上にあるのならばデスクトップに Sheet1.Xls~Sheet3.Xlsが作成されます。 Sub Sample() Dim FilePath As String Dim MyName As String Dim ObjWorkSheet As Worksheet Dim SheetNm As String FilePath = ActiveWorkbook.Path & "\" MyName = ActiveWorkbook.Name For Each ObjWorkSheet In Worksheets SheetNm = ObjWorkSheet.Name If SheetNm <> "管理用" Then Sheets(SheetNm).Copy Application.DisplayAlerts = False ActiveWorkbook.SaveAs Filename:=FilePath & SheetNm & ".xls" Application.DisplayAlerts = True ActiveWorkbook.Close End If Next MsgBox ("完了") End Sub
- MRT1452
- ベストアンサー率42% (1391/3293)
地道にマクロを組むしかないです。
- akiomyau
- ベストアンサー率43% (555/1280)
EXCEL自身にはそういった設定機能は用意されていません。