VBA – セルの範囲をCSV(区切りテキストファイル)に書き出す
範囲をCSVファイルに保存する
解決策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は、初心者が最小限のコーディング知識でゼロから手順をコーディングできるだけでなく、すべてのユーザーにとって時間の節約に役立つ多くの機能を備えています! もっと詳しく