プロが教える店舗&オフィスのセキュリティ対策術

エクセルにベトナム語を入力し、
システムにインポートするためにCSV化したところ
Ý nghĩa của このような言葉が ? ngh?a c?a とCSV内で表示されてしまいます

解消する方法ご存知のかたいらっしゃったら、教えてください

(なお、エクセルから「名前を付けて保存」の際に
オプションで「Webオプション」選択し、「ベトナム語」を選択してみましたがだめでした」

A 回答 (3件)

こんにちは。



Unicodeでよければ、5年ほど前に作ったものがありますので、CSV化のコードを提供します。
どこかに、ActiveX やフォーム・コントロールのボタンとマクロを設定してください。昔のままですが、Excel 2010で試してみて、Unicodeは、出力しています。(おそらく、97以上なら、どのバージョンでも、可動するはずです。)

'標準モジュール (ActiveX コントロールの場合は、ボタンを設定したシート)
'最初に、出力範囲を選択してから、ボタンなどで実行してください。

'//
Sub CSV_OutputByUnicode()
  Dim rng As Range
  Dim i As Long, j As Long
  Dim Fso As Object
  Dim f As Object
  Dim fName As Variant
  Dim buf As String
  Dim TxtLine As String
  Dim objTxt As Object
  Dim OverWrite As Boolean
  Dim mPath As String
  '出力パス
  mPath = ActiveWorkbook.Path & "\"
  Set rng = Selection
  If ActiveWorkbook.Path = "" Then MsgBox "一旦ファイルを保存してください。", vbExclamation: Exit Sub

  '範囲のチェック(マウスで選択)
  If rng.Cells.Count < 3 Then
    MsgBox "最初に、範囲を選択してください。", vbExclamation
    Exit Sub
  End If
  On Error GoTo ErrHandler
Start:
  Do
    fName = Application.InputBox("出力名を入れてください。", "CSV出力", Type:=2)
    If VarType(fName) = vbBoolean Then Exit Sub
  Loop Until Trim(fName) <> ""
  fName = mPath & fName
  '拡張子のチェック
  If StrComp(Right(fName, 4), ".csv", vbTextCompare) <> 0 Then
    fName = StrConv(fName & ".csv", vbNarrow)
  End If
  'ファイルの上書きチェック
  If Dir(fName) <> "" Then
    If MsgBox("上書きしますか", vbQuestion + vbOKCancel) = vbOK Then
      OverWrite = True
    Else
      GoTo Start
    End If
  End If
  '出力
  Set Fso = CreateObject("Scripting.FileSystemObject")
  Set f = Fso.CreateTextFile(fName, OverWrite, True)
  For i = 1 To rng.Rows.Count
    For j = 1 To rng.Columns.Count
      buf = buf & "," & rng.Cells(i, j).Text
    Next j
    If TxtLine = "" Then
      TxtLine = Mid(buf, 2)
    Else
      TxtLine = TxtLine & vbCrLf & Mid(buf, 2)
    End If
    buf = ""
  Next i
  f.Write (TxtLine & vbCrLf)
  f.Close
ErrHandler:
  If Err.Number > 0 Then
    MsgBox Err.Number & " : " & Err.Description
  Else
    MsgBox fName & vbCrLf & "出力しました。", vbInformation
  End If
  Set objTxt = Nothing
  Set f = Nothing
  Set Fso = Nothing
  Set rng = Nothing
End Sub
'//
    • good
    • 0

日本語エクセルの標準機能では、csvファイルを含むテキストファイルへの保存時には、文字コードをJIS8ビットコードとシフトJISコードに変換してしまう仕様だから無理。


VBAプログラムを書いて独自にユニコードのままテキストファイルへ保存するか、ソフトウェア開発業者にそうしたプログラム開発を発注すれば可能。
    • good
    • 0

エクセルだけでは無理なようです。


とりあえず Excel形式(*.xlsx) 等で保存し、
それを別のソフトで編集する必要がありそうです。
たとえば LibreOffice Calc を使用するとCSV保存時に文字コードを選択できます。
ここで多言語対応の文字コード、たとえば Unicode(UTF-8) を指定すると
外国語を含んだデータも保存できるかと思います。

ただ「システムにインポート」して使用するとのことですが、
そのシステムがインポート可能な文字コードが決まっているかと思います。
そのシステムが、たとえば日本語Windows環境で広く使用される
Shift_JIS, Windows-31J, MS932
などと呼ばれる文字コードのファイルしかインポートできないとすれば、
どうやってもベトナム語を含んだデータは投入できないことになります。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!