還暦過ぎたエンジニアの挑戦

還暦過ぎても好奇心だけは忘れない エンジニア ひかるです

MENU

unicodeでストレスなくcsvを保存する - Excel

以前にこんな記事を書いて、Excelcsvを保存するときは「イラッとする」と書きましたが。。。

blog.yutenji.biz

blog.yutenji.biz

今日はポジティブにいきます。
ではエンジニアなら
「必要な部分だけをunicodeでストレスなく保存する」
にはどうするか!!

まずはこの下の「VBAに貼り付けるコード」を展開して、中身をまるごと、PERSONAL.XLSBの標準モジュールに貼り付けてください。

VBAに貼り付けるコード

Sub copyForCsv()
    'csv文字列を作成してクリップボードにコピーするマクロ
    Dim i As Integer
    Dim j As Integer
    Dim text As String
    Dim comma As String
    Dim wquote As String
    
    text = ""
    wquote = Chr(34)
    
    Selection.Columns.AutoFit
    '選択範囲のデータだけをカンマ区切りで文字列連結する
    For i = 1 To Selection.Rows.Count
        comma = ""
        For j = 1 To Selection.Columns.Count
            text = text & comma & wquote & Selection(i, j).text & wquote
            comma = ","
        Next
        text = text & vbLf
    Next
    
    'クリップボードにコピーする
    If Application.OperatingSystem Like "*Mac*" Then
        ' Is Mac.
        text = Replace(text, "\", "\\")
        text = Replace(text, wquote, "\" & wquote)
        MacScript ("set the clipboard to " & wquote & text & wquote)
    Else
        ' Is Windows.
        'クリップボードに文字列を格納するためにテキストボックスを利用する
       With CreateObject("Forms.TextBox.1")
         .MultiLine = True
         .text = text
         .SelStart = 0
         .SelLength = .TextLength
         .copy
       End With
    End If
End Sub

使い方
  1. Excelのシートで「csvにしたい範囲」を選択してください
  2. 「表示」リボン→マクロの表示をクリックして、マクロのダイアログボックスを開きます
  3. さきほど標準モジュールに貼り付けた「PERSONAL.XLSB!copyForCsv」を選択し「実行」します
  4. 任意のテキストエディタ(おすすめはVSCode、メモ帳などでももちろん可)の新しいファイルに貼り付けます。
  5. そのまま「(任意の名前).csv」で保存します。

できたcsvはutf8で保存されていますから、様々なところにそのまま利用することができます。
逆にExcelでそのcsvを開くと日本語は「文字化け」しますからご注意を!

ご意見があればコメントにお願いしま~す。

今日は頑張って書いた。。。