Registered 2022.09.09 Update 2023.05.21  技術習得:業務系アプリQ&A,独自開発

目次

Excelからは2種のCSVが書き出せる

Excelでは、Shifi-JIS「CSV (コンマ区切り)(*.csv)」とUTF-8「CSV UTF-8(コンマ区切り)(*.csv)」のCSVが書き出せます。

Shifi-JISでは使えない漢字があるため、UTF-8で保存することが推奨されています。
ただ、UTF-8形式を扱えないアプリもあります。
どちらを使うかはデータ使用者に確認して作成したほうが良いでしょう。

Adobe IllustratorとInDesignの差し込み機能で使うCSV

Adobe IllustratorとInDesignにはデータの差し込み機能があり、CSVファイルを使います。
この時注意したいのは「IllustratorはUTF-8、InDesignはShift-JIS」と分かれていることです。
同じ会社でなぜ違うのか。

私はInDesignのCSV差し込みはあまり行いませんが、Illustratorは使うため、ExcelリボンからExcelVBAを呼び出しCSV書き出しを行っています。

Excelシートを同一フォルダにファイル名「data_utf8.csv」で書き出すVBA

Excelのシート1つを表示した状態で以下のVBAを実行すると、UTF-8に対応したCSVファイルの書き出しができます。


'開いているシートをCSV(UTF-8)で書き出す
Sub writeCSV_utf8()
  Dim ws As Worksheet
  Set ws = ActiveSheet

  Dim csvFile As String
  csvFile = ActiveWorkbook.Path & "\data_utf8.csv"
		
  'ADODB.Streamオブジェクトを生成
  Dim adoSt As Object
  Set adoSt = CreateObject("ADODB.Stream")

  Dim strLine As String
    Dim i As Long, j As Long
    i = 1

    With adoSt
    .Charset = "UTF-8"
    .LineSeparator = adLF
    .Open
	
    Do While ws.Cells(i, 1).Value <> ""
      strLine = ""
      j = 1
      Do While ws.Cells(i, j + 1).Value <> ""
      strLine = strLine & ws.Cells(i, j).Value & ","
      j = j + 1
      Loop

      strLine = strLine & ws.Cells(i, j).Value
      .WriteText strLine, adWriteLine
      i = i + 1
    Loop

    .SaveToFile csvFile, adSaveCreateOverWrite
    .Close

    End With

    MsgBox ("同一フォルダにdata_utf8.csvを書き出しました。")
			
  End Sub

このコードはネットにあった情報を元に一部を書き換えていますが、元ネタがどこにあったか記録がありません。
Excel2019では動作可能です。

手動で書き出してはダメなのか

CSVファイルへの書き出しは、[ファイル]→[名前をつけて保存]から行なっても問題ありません。
「個人用マクロブック」に記述してリボンから起動できると、保存形式の選択ミスを防ぐことができるため、VBAを使っても良いかなと思います。

トップへ