Excel

【Excel】VBAマクロでファイル出力(テキストファイルやcsv:utf-8:Shift-jisの文字コード:出力先指定など)する方法

当サイトでは記事内に広告を含みます

この記事では、【Excel】VBAマクロでファイル出力(テキストファイルやcsv:utf-8:Shift-jisの文字コード:出力先指定など)する方法について解説していきます。

ポイントとしては

`FileSystemObject`と

`GetSaveAsFilename`

メソッドの使用です。

特に、初心者の方にもわかりやすく説明するため、変数名は日本語をローマ字にしたユニークな表現を採用しています。実際に使用する際は、これらの変数名を適切な英語表記に変更してご利用ください。

それでは、具体的なステップに沿って詳しく見ていきましょう!

 

VBAマクロでテキストファイル出力(アクティブシートの内容すべてを出力:utf-8の文字コード:ダイヤログで出力先指定)

それではまず、エクセルブック内のアクティブシートの内容をUTF-8のテキストファイルとして出力する方法について解説していきます。

この手順では、ユーザーが保存先を選択できるダイヤログボックスを使用します。

「Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。」

Sub TextFileOutputUTF8()
    Dim hozonbasho As Variant
    hozonbasho = Application.GetSaveAsFilename(FileFilter:="テキストファイル (*.txt), *.txt", Title:="保存先を選択してください")

    If hozonbasho <> False Then
        Dim fso As Object
        Set fso = CreateObject("Scripting.FileSystemObject")
        Dim fileStream As Object
        Set fileStream = fso.CreateTextFile(hozonbasho, True, True) ' True for overwrite, True for Unicode

        Dim sh As Worksheet
        Set sh = ThisWorkbook.ActiveSheet

        Dim r As Range
        For Each r In sh.UsedRange.Rows
            fileStream.WriteLine Join(Application.Transpose(Application.Transpose(r.Value)), vbTab)
        Next r

        fileStream.Close
    End If
End Sub

コードのAlt+F8を押し、マクロ選択画面でTextFileOutputUTF8関数を実行します。

このコードでは、まずユーザーが保存先(出力先)を選択するダイヤログボックスを表示します。

次に、選択されたパスに新しいテキストファイルを作成し、アクティブシートの内容を行ごとに書き込んでいきます。

ファイルのエンコーディング(文字コード)はUTF-8にとしています。

 

VBAマクロでcsvファイル出力(アクティブブックの内容すべてを出力:Shift-jisの文字コード:ダイヤログで出力先指定)

続いては、アクティブブックの内容すべてを文字コードがShift-JISのCSVファイルとして出力する方法について解説していきます。

こちらもユーザーが保存先を選択するダイヤログボックスを使用します。

Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。

Sub ExportSheetsToCSV()
    Dim sh As Worksheet
    Dim hozonbashoCSV As Variant
    Dim fso As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    
    For Each sh In ThisWorkbook.Sheets
        hozonbashoCSV = Application.GetSaveAsFilename(InitialFileName:=sh.Name, _
                                                     FileFilter:="CSVファイル (*.csv), *.csv", _
                                                     Title:="保存先を選択してください(" & sh.Name & "シート)")
        If hozonbashoCSV <> False Then
            Dim fileStream As Object
            Set fileStream = fso.CreateTextFile(hozonbashoCSV, True, False) ' True for overwrite, False for non-Unicode (Shift-JIS)

            Dim r As Range
            For Each r In sh.UsedRange.Rows
                fileStream.WriteLine Join(Application.Transpose(Application.Transpose(r.Value)), ",")
            Next r

            fileStream.Close
        End If
    Next sh
End Sub

コードのAlt+F8を押し、マクロ選択画面でCSVFileOutputShiftJIS関数を実行します。

このマクロは、アクティブブックの各シートについて、ユーザーが選択した場所にそれぞれ異なるCSVファイルとして保存します。

(保存先のファイル名を選択するダイヤログボックスがシートごとに表示され、ユーザーはそれぞれのシートのデータを異なるファイルに出力可能)

 

まとめ VBAマクロでファイル出力(テキストファイルやcsv:utf-8:Shift-jisの文字コード:出力先指定など)する方法

この記事では、VBAマクロでファイル出力(テキストファイルやcsv:utf-8:Shift-jisの文字コード:出力先指定など)する方法について確認しました。

マクロをマスターし、より快適に生活していきましょう!