メニューを使用してワークシートをエクスポートするCSVファイルを作成するとき、Arkadiuszは、セミコロン(;)を使用することを指定できることに注意しました

フィールド区切り文字として。ただし、マクロ(FileFormat:= xlCSVまたはxlCSVWindows)を使用してCSVファイルを保存する場合、区切り文字としてセミコロンを指定することはできません。

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

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

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

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

Sub CreateFile()

FName = ActiveWorkbook.Name     If Right(FName, 4) = ".xls" Then         FName = Mid(FName, 1, Len(FName) - 4)

End If

Columns(1).Insert Shift:=xlToRight

For i = 1 To Range("B65000").End(xlUp).Row         TempString = ""

For j = 2 To Range("HA1").End(xlToLeft).Column             If j <> Range("HA1").End(xlToLeft).Column Then                 TempString = TempString & _                   Cells(i, j).Value & ";"

Else                 TempString = TempString & _                   Cells(i, j).Value             End If         Next         Cells(i, 1).Value = TempString     Next

Columns(1).Select     Selection.Copy     Workbooks.Add     Range("A1").Select     ActiveSheet.Paste     Application.CutCopyMode = False

ActiveWorkbook.SaveAs Filename:=FName & ".txt", _       FileFormat:=xlPrinter End Sub

このマクロは、出力ファイルを作成するための独自のアプローチを採用しています。ワークシートの左側に列を挿入し、その列の右側にあるすべてのデータを新しく挿入された列Aに連結します。各フィールドの間にセミコロンを追加します。それが完了すると、列Aに入力された情報を取得し、新しいブックに書き込みます。このワークブックは、xlPrinterファイル形式を使用してディスクに保存されます。つまり、変更を加えることなく「そのまま」出力されます。

ワークシートに変更を加えずに情報をファイルに直接書き込む、より直接的なアプローチが必要な場合は、次のブログ投稿のマクロをご覧ください。

https://web.archive.org/web/20060302021412/http:/www.dicks-blog.com:80/archives/2004/11/09/roll-your-own-csv/

マクロは各フィールド間でコンマを使用しますが、代わりにセミコロンを使用するように簡単に変更できます。

注:

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

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

このヒント(3232)は、Microsoft Excel 97、2000、2002、および2003に適用されます。Excel(Excel 2007以降)のリボンインターフェイス用のこのヒントのバージョンは、次の場所にあります。