PeaceJetのブログ

金融系の社内エンジニアをやりながら、マーケティングやデータ分析などもやっています。

ワークシートごとにCSVファイルを作成する。前編【エクセルマクロ・VB・VBA】

ワークシートをCSVファイルとして出力(保存)する方法をご紹介します。

たとえば、ワークシートに下記のような値が入っているとします。

 AB
1佐藤satou@hogehoge.jp
2藤田fujita@foobar.jp
3ジョン・ピーターセンjhon@hogefuga.uk
4小早川kobayakawa@fugafuga.jp

上記のワークシートをシートごとにCSVファイルにします。

「メールソフトに、CSV形式で読み込ませたい」

といったニーズがあった場合に便利かもしれません。

Sub CSV作成(MyWorksheet As String)
    
    Dim FileSystemObject, TargetFileName As Object
    Dim TargetData As Range
    Dim OutPutData As String
    Dim i, j As Long
    
    'csvファイルを保存する場所を指定します。
    Const MyFilePath = "C:\Users\XXXXXXXXXX\Desktop"

    Set FileSystemObject = CreateObject("Scripting.FileSystemObject")
    Set TartgetObject = Worksheets(MyWorksheet)
    
        Set TargetFileName = FileSystemObject.CreateTextFile _
            (MyFilePath & "\" & TartgetObject.Name & ".csv", True)
        
        'キーボードで「Ctrl」+「*」を押して得られるすべての領域。
        Set TargetData = TartgetObject.Range("A1").CurrentRegion
        
        For i = 1 To TargetData.Rows.Count
            
            OutPutData = ""
            
            For j = 1 To TargetData.Columns.Count
                
                If OutPutData = "" Then
                    
                    OutPutData = TargetData(i, j)
                
                Else

                    OutPutData = OutPutData & "," & TargetData(i, j)
                
                End If
            
            Next j
            
            If OutPutData <> "" Then
                
                TargetFileName.WriteLine OutPutData
            
            End If
        
        Next i

End Sub

今回のプロシージャでは単独では動作せず、他のプロシージャから Call してあげる必要があります。

次のエントリーでは、それらを含めた具体的な使い方について解説したいと思います。

次回、ワークシートごとにCSVファイルを作成する。後編【エクセルマクロ・VB・VBA】