CSVファイルをマクロに保存するときの区切り文字の指定(Microsoft Excel)
メニューを使用してワークシートをエクスポートする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以降)のリボンインターフェイス用のこのヒントのバージョンは、次の場所にあります。