リボンから利用できるツールを使用してワークシートをCSVファイルとしてエクスポートする場合、Arkadiuszは、フィールド区切り文字としてセミコロン(;)を使用するように指定できると述べました。ただし、マクロ(FileFormat:= xlCSVまたはxlCSVWindows)を使用してCSVファイルを保存する場合、区切り文字としてセミコロンを指定することはできません。

これは、VBAの設計によりこのように機能します。 VBAのエクスポートルーチンのExcel実装では、CSV内のアイテムをどのように分離するかを決定するために、Windowsの地域設定が常に使用されます。

具体的には、ルーチンは区切り文字のリストセパレータフィールドを調べます。これは、必要に応じて、地域設定構成のリストセパレータ設定を変更することにより、区切り文字をセミコロンに変更できることを意味します。

地域の設定を変更したくない場合は、代わりに、任意の方法でファイルを出力する独自のマクロを作成できます。

しばらくの間、ファイルを出力する次のマクロについて考えてみます。

Sub CreateFile()

Dim sFName As String     Dim Rows As Long     Dim Cols As Long     Dim J As Long     Dim K As Long     Dim sTemp As String     Dim sSep As String

sSep = ";"  'Specify the separator to be used

sFName = ActiveWorkbook.FullName     If Right(sFName, 5) = ".xlsx" Then         sFName = Mid(sFName, 1, Len(sFName) - 5)

sFName = sFName & ".txt"

Open sFName For Output As 1

With ActiveSheet             'Number of rows to export is based on the contents             'of column B. If it should be based on a different             'column, change the following line to reflect the             'column desired.

Rows = .Cells(.Rows.Count, "B").End(xlUp).Row             For J = 1 To Rows                 sTemp = ""

Cols = .Cells(J, .Columns.Count).End(xlToLeft).Column                 For K = 2 To Cols                     sTemp = sTemp & .Cells(J, K).Value                     If K < Cols Then sTemp = sTemp & sSep                 Next                 Print #1, sTemp             Next J         End With

Close 1

sTemp = "There were " & Rows & " rows of data written "

sTemp = sTemp & "to this file:" & vbCrLf & sFName     Else         sTemp = "This macro needs to be run on a workbook "

sTemp = sTemp & "stored in the XLSX format."

End If

MsgBox sTemp End Sub

このマクロは、ブックと同じ名前のテキストファイルを開きます。次に、各行をステップ実行し、セルの内容の文字列の作成を開始します。 (これはsTemp変数に入れられます。)各セルには、sSep変数で定義されているように、セルの間にセミコロンが配置されています。各行の連結値はテキストファイルに保存され、完了するとテキストファイルが閉じられます。このルーチンは非常に高速で、完了すると、ファイルにエクスポートされた行数を示すメッセージが表示されます。

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(9243)は、Microsoft Excel 2007、2010、2013、2016、2019、およびOffice 365のExcelに適用されます。Excelの古いメニューインターフェイス用のこのヒントのバージョンは、次の場所にあります。