Excel Tips by pPoy

トップへ←Top    VBAへVBA  VBA基礎へVBA 基礎  一般へ一般  

Macro 全シートをシート別に CSV ファイルとして出力
《FileSystemObject》 (Excel97,Excel2000,Excel2002)
ワークシートにデータベース形式で作成されている表を、それぞれのシート名をファイル名にして、
CSV 形式のファイルに出力するマクロです。
≪準備≫

準備
右のような Excel Book があります。

これらのシートを順番に、
csv ファイルとして出力します。
シート名はそのままファイル名として
使用します。

データは、A1 セルから始まり、途中に空白の行や列が入らないことが条件です。
出力用の、「C:\Test」 フォルダを予め作っておいてください。
中にあるシート名と同名の CSV ファイルは無条件で上書きされます。
必要なファイルは退避しておいてください。

以下のコードを標準モジュールに貼り付けてください。
この頁のTOPへTop
Sub CreateTxtDataS()
'全シートを1シート毎にカンマ区切りcsvファイルとして出力する
'シート名はファイル名として使用
'2005/02/13 pPoy
    Dim fso As Object               'FileSystemObject
    Dim ffile As Object             'TextStream
    Dim myData As Range             'データ領域格納
    Dim myTmp As String             '出力するデータ
    Dim txtName As String           'csvファイル名=シート名
    
    Dim w As Worksheet
    Dim i As Long, j As Long
    Const myPath = "C:\Test"        'csvファイルのパス

    Set fso = CreateObject("Scripting.FileSystemObject")
    
    For Each w In Worksheets
        'シート名をファイル名にセット
        txtName = w.Name & ".csv"
        'csvファイル作成
        Set ffile = _
            fso.CreateTextFile(myPath & "\" & txtName, True)
        'A1から始まる全データ範囲取得
        Set myData = w.Range("A1").CurrentRegion
        
        '範囲内の全行数ループ
        For i = 1 To myData.Rows.Count
            myTmp = ""
            '範囲内の1行ループ
            For j = 1 To myData.Columns.Count
                'データ格納
                If myTmp = "" Then
                    '最初のデータ
                    myTmp = myData(i, j)
                Else
                    '残りのデータはカンマでつなげる
                    myTmp = myTmp & "," & myData(i, j)
                End If
            Next j
            
            'テキストファイル出力
            If myTmp <> "" Then
                ffile.WriteLine myTmp
            End If
        Next i
    Next w
    MsgBox "処理終了〜!", vbOKOnly
    
    '変数開放
    ffile.Close: Set myData = Nothing
    Set ffile = Nothing: Set fso = Nothing
End Sub
この頁のTOPへTop
≪使用方法≫

メニューバーの 「ツール」−「マクロ」−「マクロ」
で、マクロの選択画面から、「CreateTxtDataS」 を実行してください。

≪結果≫

結果
C:\Test」 フォルダ内に、
ワークシートの数だけ、
CSV ファイルが出来上がります。

CSV
メモ帳で開くとこんな感じです。
勿論そのまま Excel で開けます。
≪注意≫
  • このマクロは、アクティブなブックの全ワークシートが対象です。
  • 行の途中に空白行があった場合、そこが表の最後と判断します。それより下のデータは出力できません。
  • 列の途中に空白列があった場合、そこが表の右端と判断します。それより右のデータは出力できません。
  • 表は、「A1」 セルから始まっていることが必要です。
  • 出力用の「C:\Test」 フォルダが必要です。無い場合、エラーで止まります。
  • 指定されたフォルダに、同名の CSV ファイルがあった場合、無条件で上書きされます。
    必要なファイルは退避してからマクロを実行してください。
  • FileSystemObject を使用しているため、Windows98 以降の OS が対象です。


この頁のTOPへTop
【念の為の注意書きです。】
このページ(下位ページ含む)の全ての物の無断転載を禁止いたします。
又、当ページ(下位ページ含む)に記載されていることは、全て自己の責任において実行してください。

Copyright(C) pPoy 2005-2010