大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAで、複数シートを複数ブックで保存するには、「For Each」を使ってすべてのシートをループして、名前を付けて保存するとできます。VBAを使って別ブック保存を自動化していきましょう。

はじめに

この記事では、複数シートを複数ブックに保存する方法について、ご紹介します。

複数ブックに保存したい場合は、「For Each」を使って、すべてのシートをループして、別ブックに保存するとできます。

名前を付けて保存する際は、ファイル名が被らないように「日付」を付けて保存すると便利です。

拡張子を変更して保存することで、「.csv形式」や「.txt形式」で名前を付けて保存することもできます。

VBAを使って、「名前を付けて保存」を自動化していきましょう。

では、複数シートを複数ブックに保存する方法について、解説していきます。

この記事を読むメリット

  • 複数シートを複数ブックに保存する方法がわかります。

本記事の内容を動画でまとめています

目次から見たい項目へ移動すると便利ですよ。

目次

複数シートを複数の別ブックに名前を付けて保存

複数シートを、複数の別ブックに名前を付けて保存する、というのをやってみます。

1つのシートを別ブックに保存

まずは、「1つ」のシートを別ブックに保存する、というのをやってみます。

1つのシートを別ブックで保存したい

やりたい内容は、1つのシートを別ブックで名前を付けて保存したい、ということになります

VBAコードは、次のようになります。

Sub TEST1()
    
    '新規ブックにコピー
    ActiveSheet.Copy
    
    '名前を付けて保存
    ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\別ブック.xlsx"
    ActiveWorkbook.Close False 'ブックを閉じる
    
End Sub

手順は、

  • 「.Copy」を使って、新規ブックにコピー
  • 「.SaveAs」で、名前を付けて保存
  • 「.Close」で、ブックを閉じる

という流れになります。

では、VBAコードを実行してみます。

1つのシートを別ブックで保存できた

名前を付けて保存できます。

名前を付けて保存できました

1つのシートを、名前を付けて保存できます。

1つのシートを、名前を付けて保存できました

1つのシートを、名前を付けて保存できました。

複数のシートを複数ブックに保存

次は、「複数のシート」を「複数ブック」に保存してみます。

やりたい内容は、複数シートを複数ブックに名前を付けて保存したい、ということになります。

複数シートを複数ブックに保存したい

やりたい内容は、複数シートを複数ブックに名前を付けて保存したい、ということになります

VBAコードは、次のようになります。

Sub TEST2()
    
    Dim A
    
    'シートをすべてループ
    For Each A In Worksheets
        '新規ブックにコピー
        A.Copy
        '名前を付けて保存
        ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & A.Name & ".xlsx"
        ActiveWorkbook.Close False 'ブックを閉じる
    Next
    
End Sub

ポイントは、「For Each」を使って、すべてのシートをループする、という点になります。

では、VBAコードを実行してみます。

複数シートを複数ブックに保存できた

複数ブックに、名前を付けて保存できます。

複数ブックに、名前を付けて保存できました

複数シートと、1つのシート毎に名前を付けて保存できます。

複数シートと、1つのシート毎に名前を付けて保存できました

複数シートと、1つのシート毎に名前を付けて保存できました。

こんな感じで、「For Each」を使って、すべてのシートをループすると、複数ブックに保存することができます。

日付を付けて複数ブックに名前を付けて保存

「日付を付けて」、複数ブックに名前を付けて保存してみます。

日付を付けて複数ブックに保存

日付を付けて複数ブックに保存してみます。

やりたい内容は、複数シートを「日付を付けて」複数ブックに保存したい、ということになります。

複数シートを「日付を付けて」複数ブックに保存したい

やりたい内容は、複数シートを「日付を付けて」複数ブックに保存したい、ということになります

VBAコードは、次のようになります。

Sub TEST3()
    
    Dim A, B, C
    
    '日付と時間を取得
    B = Format(Now(), "yyyymmdd-hhmmss")
    
    'すべてのシートをループ
    For Each A In Worksheets
        '新規ブックにコピー
        A.Copy
        'フルパスを作成
        C = ThisWorkbook.Path & "\" & A.Name & "_" & B & ".xlsx"
        '名前を付けて保存
        ActiveWorkbook.SaveAs Filename:=C
        ActiveWorkbook.Close False 'ブックを閉じる
    Next
    
End Sub

日付は、「Now()」を使うと、取得することができます。

桁数を整えたいので、「Format」を使っています。

では、VBAコードを実行してみます。

複数シートを「日付を付けて」複数ブックに保存できた

日付を付けて、複数ブックに名前を付けて保存できます。

日付を付けて、複数ブックに名前を付けて保存できました

複数シートを、「日付を付けて」複数ブックに保存できます。

複数シートを、「日付を付けて」複数ブックに保存できました

複数シートを、「日付を付けて」複数ブックに保存できました。

拡張子を変更して複数ブックに名前を付けて保存

別ブックに保存する際は、拡張子を変更して保存することもできます。

次の2つの形式で、保存してみます。

  • CSVファイル
  • .txtファイル

では、実際にやってみます。

CSVファイル

やりたい内容は、複数シートを「CSV」で複数ブックに保存したい、ということになります。

複数シートを「CSV」で複数ブックに保存したい

やりたい内容は、複数シートを「CSV」で複数ブックに保存したい、ということになります

VBAコードは、次のようになります。

Sub TEST4()
    
    Dim A, B
    
    'すべてのシートをループ
    For Each A In Worksheets
        '新規ブックにコピー
        A.Copy
        'フルパスを作成
        B = ThisWorkbook.Path & "\" & A.Name & ".csv"
        'CSVで、名前を付けて保存
        ActiveWorkbook.SaveAs Filename:=B, FileFormat:=xlCSV
        ActiveWorkbook.Close False 'ブックを閉じる
    Next
    
End Sub

ポイントは、「FileFormat:=」の引数を使う点になります。

CSV形式で、保存したいので、「xlCSV」を入力しています。

では、VBAコードを実行してみます。

複数シートを「CSV」で複数ブックに保存できた

「CSV形式」で、複数ブックに名前を付けて保存できます。

「CSV形式」で、複数ブックに名前を付けて保存できました

複数シートを、「CSV形式」で複数ブックに保存できます。

複数シートを、「CSV形式」で複数ブックに保存できました

複数シートを、「CSV形式」で複数ブックに保存できました。

txtファイル

やりたい内容は、複数シートを「.txt形式」で複数ブックに保存したい、ということになります。

複数シートを「.txt」で複数ブックに保存したい

やりたい内容は、複数シートを「.txt形式」で複数ブックに保存したい、ということになります

VBAコードは、次のようになります。

Sub TEST5()
    
    Dim A, B
    
    'すべてのシートをループ
    For Each A In Worksheets
        '新規ブックにコピー
        A.Copy
        'フルパスを作成
        B = ThisWorkbook.Path & "\" & A.Name & ".txt"
        '「.txt」形式で、名前を付けて保存
        ActiveWorkbook.SaveAs Filename:=B, FileFormat:=xlText
        ActiveWorkbook.Close False 'ブックを閉じる
    Next
    
End Sub

「.txt形式」で、保存したいので、「xlText」を入力しています。

では、VBAコードを実行してみます。

複数シートを「.txt」で複数ブックに保存できた

「.txt形式」で、複数ブックに名前を付けて保存できます。

「.txt形式」で、複数ブックに名前を付けて保存できました

複数シートを、「.txt形式」で複数ファイルに保存できます。

複数シートを、「.txt形式」で複数ファイルに保存できました

複数シートを、「.txt形式」で複数ファイルに保存できました。

おわりに

この記事では、複数シートを複数ブックに保存する方法について、ご紹介しました。

複数ブックに保存したい場合は、「For Each」を使って、すべてのシートをループして、別ブックに保存するとできます。

名前を付けて保存する際は、ファイル名が被らないように「日付」を付けて保存すると便利です。

拡張子を変更して保存することで、「.csv形式」や「.txt形式」で名前を付けて保存することもできます。

VBAを使って、「名前を付けて保存」を自動化していきましょう。

参考になればと思います。最後までご覧くださいまして、ありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

サイト内を検索する

↓キーワードを入力する

アーカイブから探す