複数のシートを含むExcel(.xlsx)ファイルを個別のsheet [n] .xlsxに「分割」するにはどうすればよいですか?


17

タイトルはこの質問のすべてを示していると思いますが、もう少し詳しく説明します。

数十枚のシートを含む.xlsxファイルがあります。これらのシートをすべて個別の.xlsxファイルとして出力したい。それらの自動命名は必要ありません。Excelにはシートを別のファイルにエクスポートする機能がありますか?

回答:


17

これは組み込みの機能ではありません。

ただし、このコードを実行すると、ジョブが実行されます。

Sub SaveSheets()
    Dim strPath As String
    Dim ws As Worksheet

    Application.ScreenUpdating = False

    strPath = ActiveWorkbook.Path & "\"
    For Each ws In ThisWorkbook.Sheets
        ws.Copy
        'Use this line if you want to break any links:
        BreakLinks Workbooks(Workbooks.Count)
        Workbooks(Workbooks.Count).Close True, strPath & ws.Name & ".xlsx"
    Next

    Application.ScreenUpdating = True
End Sub

Sub BreakLinks(wb As Workbook)
    Dim lnk As Variant
    For Each lnk In wb.LinkSources(xlExcelLinks)
        wb.BreakLink lnk, xlLinkTypeExcelLinks
    Next
End Sub

コードを実行するには、次を実行します。

  1. VBAエディターを開きます(Alt+ F11
  2. 左上のツリーで、ワークブックを右クリックして新しいモジュールを挿入します
  3. 上記のコードをこのモジュールにコピーします
  4. VBAエディターを閉じます
  5. ExcelでAlt+ F8を押してマクロを実行し、選択しますSaveSheets

または、MS OfficeにVBAを追加するにどうすればよいですか?


ありがとう!逆についてはどうですか?-それを元に戻すには?このExcelファイルには「リンク」が含まれていたようです(以前はこの機能を使用したことがありません)。それらを分割し、同時にリンクを更新する/またはリンクを更新するだけですか?
-eichoa3I

1
問題は、リンクをどのように処理するかです。あなたは簡単に挿入することにより、値に置き換えることができWorkbooks(Workbooks.Count).BreakLinksた後ws.Copy...
ピーター・アルバート・

1つのブックを開いた後、Excelのポップアップウィンドウでリンクを修正するように求められました。このダイアログボックスをクリックすると、すべてのファイルでリンクが機能するようになりました。これがファイルに保存されたのかローカルに保存されたのか疑問に思っています
...-eichoa3I

Workbooks(Workbooks.Coun).BreakLinksの値で置き換えると言うとき、リンクが削除されるのですか?それらを処理する最良の方法は、単にそれらを廃止することだと思います(つまり、ユーザーが現在分離されたExcelファイルを開くと、リンク切れに関する警告は表示されません)。
eichoa3I

申し訳ありませんが、試してくださいWorkbooks(Workbooks.Count).BreakLink- s最後に
ピーターアルバート

11
  1. Excelシートのタブを右クリックすると、[ 移動]または [ コピー... ]を選択できます

    ここに画像の説明を入力してください

  2. 表示されるダイアログで、対象のワークブックを選択できます。(新しい本)を選択します。

    ここに画像の説明を入力してください

  3. OKをクリックします。これで、シートは新しいドキュメント内にあります。


8

Peter Albertのソリューションを試しましたが、うまくいきませんでしたので、この投稿(「Excel-ワークシートを個別のファイルとして保存する」)でコンピューターオタクの日記で解決策を見つけました。

それは素晴らしい作品です。ドットを含むシートの名前を変更して、.xls拡張子の付いた正しい名前のファイルを取得する必要があります。

Sub CreateNewWBS()
Dim wbThis As Workbook
Dim wbNew As Workbook
Dim ws As Worksheet
Dim strFilename As String

    Set wbThis = ThisWorkbook
    For Each ws In wbThis.Worksheets
        strFilename = wbThis.Path & "/" & ws.Name
        ws.Copy
        Set wbNew = ActiveWorkbook
        wbNew.SaveAs strFilename
        wbNew.Close
    Next ws
End Sub

Peter Albertの投稿またはMS OfficeにVBAを追加するには


1
私はまた、ピーター・アルバートのソリューションを試してみましたが、エラー「実行時error'13'があった:型の不一致は幸いにもこの回答で解決策が私のために動作します。。
ビン

同じ名前の既存のファイルを上書きするにはどうすればよいですか?
DAE

各ダンプは個別のフォルダーに格納されるため、これは必要ありませんでした。たぶんこのスレッドを
-hrvoj3e

あなたのソリューションは私のために働いた:)
ムハンマドワ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.