- ベストアンサー
外国語とCSVについて
エクセルにベトナム語を入力し、 システムにインポートするためにCSV化したところ Ý nghĩa của このような言葉が ? ngh?a c?a とCSV内で表示されてしまいます 解消する方法ご存知のかたいらっしゃったら、教えてください (なお、エクセルから「名前を付けて保存」の際に オプションで「Webオプション」選択し、「ベトナム語」を選択してみましたがだめでした」
- みんなの回答 (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 '//
その他の回答 (2)
日本語エクセルの標準機能では、csvファイルを含むテキストファイルへの保存時には、文字コードをJIS8ビットコードとシフトJISコードに変換してしまう仕様だから無理。 VBAプログラムを書いて独自にユニコードのままテキストファイルへ保存するか、ソフトウェア開発業者にそうしたプログラム開発を発注すれば可能。
- aozakana_dha
- ベストアンサー率45% (76/168)
エクセルだけでは無理なようです。 とりあえず Excel形式(*.xlsx) 等で保存し、 それを別のソフトで編集する必要がありそうです。 たとえば LibreOffice Calc を使用するとCSV保存時に文字コードを選択できます。 ここで多言語対応の文字コード、たとえば Unicode(UTF-8) を指定すると 外国語を含んだデータも保存できるかと思います。 ただ「システムにインポート」して使用するとのことですが、 そのシステムがインポート可能な文字コードが決まっているかと思います。 そのシステムが、たとえば日本語Windows環境で広く使用される Shift_JIS, Windows-31J, MS932 などと呼ばれる文字コードのファイルしかインポートできないとすれば、 どうやってもベトナム語を含んだデータは投入できないことになります。