VBA – セルの範囲をCSV(区切りテキストファイル)に書き出す

Written by

Editorial Team

Reviewed by

Steve Rynearson

Translated by

masahiro yoshida

Last updated on 8月 1, 2022

範囲をCSVファイルに保存する

export range deliminated解決策670番では、範囲を区切りテキストファイルにエクスポートする方法について説明します。

これは、Excelのデフォルトの方法で、ワークシートをテキストファイルまたはCSV区切りファイルとして保存するときに「名前を付けて保存」を選択する方法の代わりに使用する便利な方法です。

1.  テンプレートを使用していて、ヘッダーやその他の雑多なものを除いたデータのみをエクスポートしたい場合

2. 同様に、データセットの一部だけをエクスポートしたい場合

3. アプリケーション固有のカスタムデリミターでファイルを保存したい場合

これらの1, 2, 3のいずれかを行う必要がある場合、次のような関数が役に立つかもしれません。これは、エクスポートする範囲、ファイルの保存先、データの区切り記号を受け取り、指定された通りにデータを保存します。

以下は、ExportRangeという関数の呼び出し方です。

Sub CallExport()

'ExportRange(range,where,delimiter)

Call ExportRange(Sheet1.Range("A1:C20"), _

"C:mark.txt", ",")

End Sub

まず、エクスポートしたい範囲を関数に指定し、次にエクスポート先、そして使用する区切り記号を指定します。また、ExportRange関数が必要です。

Function ExportRange(WhatRange As Range, _

         Where As String, Delimiter As String) As String

Dim HoldRow As Long '行の位置を示す変数

    HoldRow = WhatRange.Row

Dim c As Range 'ループ用のRange変数

For Each c In WhatRange

    If HoldRow <> c.Row Then

        '改行を追加し、余分なデリミタを削除する

ExportRange = Left(ExportRange, Len(ExportRange) - 1) _

                          & vbCrLf & c.Text & Delimiter

        HoldRow = c.Row

    Else

        ExportRange = ExportRange & c.Text & Delimiter

    End If

NExt c

'余分なデリミタをトリミングする

ExportRange = Left(ExportRange, Len(ExportRange) - 1)

'ファイルがすでに存在する場合は、そのファイルを消去する

If Len(Dir(Where)) > 0 Then

    Kill Where

End If

Open Where For Append As #1 '新しいファイルを書き込む

Print #1, ExportRange

Close #1

End Function

VBAのコーディングが簡単に

VBAのコードをオンラインで検索するのはもうやめましょう。AutoMacro – A VBA Code Builderは、初心者が最小限のコーディング知識でゼロから手順をコーディングできるだけでなく、すべてのユーザーにとって時間の節約に役立つ多くの機能を備えています! alt text もっと詳しく

<<VBAのサンプルに戻る

vba-free-addin

VBA Code Examples Add-in

Easily access all of the code examples found on our site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

(No installation required!)

Free Download

Return to VBA Code Examples