• ベストアンサー

外国語とCSVについて

エクセルにベトナム語を入力し、 システムにインポートするためにCSV化したところ Ý nghĩa của このような言葉が ? ngh?a c?a とCSV内で表示されてしまいます 解消する方法ご存知のかたいらっしゃったら、教えてください (なお、エクセルから「名前を付けて保存」の際に オプションで「Webオプション」選択し、「ベトナム語」を選択してみましたがだめでした」

質問者が選んだベストアンサー

  • ベストアンサー
回答No.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)

noname#217196
noname#217196
回答No.2

日本語エクセルの標準機能では、csvファイルを含むテキストファイルへの保存時には、文字コードをJIS8ビットコードとシフトJISコードに変換してしまう仕様だから無理。 VBAプログラムを書いて独自にユニコードのままテキストファイルへ保存するか、ソフトウェア開発業者にそうしたプログラム開発を発注すれば可能。

回答No.1

エクセルだけでは無理なようです。 とりあえず Excel形式(*.xlsx) 等で保存し、 それを別のソフトで編集する必要がありそうです。 たとえば LibreOffice Calc を使用するとCSV保存時に文字コードを選択できます。 ここで多言語対応の文字コード、たとえば Unicode(UTF-8) を指定すると 外国語を含んだデータも保存できるかと思います。 ただ「システムにインポート」して使用するとのことですが、 そのシステムがインポート可能な文字コードが決まっているかと思います。 そのシステムが、たとえば日本語Windows環境で広く使用される Shift_JIS, Windows-31J, MS932 などと呼ばれる文字コードのファイルしかインポートできないとすれば、 どうやってもベトナム語を含んだデータは投入できないことになります。

関連するQ&A

  • 5行目からのCSVデータを作りたい

    いつもお世話になります。 とあるシステムにデータを入力して、CSVファイルを作成して別システムにインポートしているのですが、そのファイルフォーマットがデータが5行目から始まる形のものなのです。とある事情からそれをエクセルで作成しなければならず、CSVで保存したものを開くと空白行を無視して1行目から始まってしまいます。 1から4行目までを空白にしてCSVを作成する方法をご教授ください。

  • csv保存について

    windowsにてexcel2003を使用しています。 csvで保存した際にクォートをつける方法を教えてください。 Aのセルに数値を入力しBのセルに日本語を入れております。これでcsvにて保存しテキストエディタで開くと 1,日本語 2,日本語 ・・・ となってます。 希望としては "1","日本語" "2","日本語" ・・・ とクォートで囲みたいのですが設定で行うのでしょうか? ツールからオプション等を探してみたのですが方法がわかりません。

  • ExcelからCSVファイルへの変換と文字化け

    エクセルからCSVファイルへの変換したときの文字化けに悩まされています。 たとえば、 千代田区大手町19-1 という住所がはいっているセルがあり、CSVに変換すると、 千代田区大手町19?1 となります。 エクセルで開いても、テキストエディタで開いても「-」が「?」に文字化けします。 エンコードの問題なのでしょうが、どうすれば文字化けが解消されるのか、わかりません。 エクセルはデフォルトではSJISで保存されるようなので、 UTF8で保存すれば、文字化けはなくなるのかもしれません。 ただ、 http://web-laboratories.com/excel-csv こちらのサイトにあるように、 [WEBオプション]をつかってUnicode[UTF-8]で保存しても、 テキストエディタで開きなおすと、SJISのままになっているようです。 文字化けをさせないCSVファイルへの保存のやり方を教えてください。

  • エクセル Web上のExcelファイルをCSV形式で保存したい!

    WEB上のエクセルファイルをファイルのダウンロードで保存を選択します。 すると、「名前をつけて保存」画面になるので、ファイル形式をCSVにしたいのですが、[Microsoft Excelワークシート][すべてのファイル]の2種類しか選択できません。 どのようにしたらファイルの種類にCSVを表示できるのでしょうか?? おわかりの方教えてくださーい!

  • エクセルのcsv保存で。。

    前と同じような質問ですみません。。。 エクセルのSheet5をcsv形式で保存する際、 名前を付けて保存のダイアログを表示させて、 ファイルの名前を常に「bonaplus.csv」と 既定値で表示させておくようなマクロは できないでしょうか? ※bonaplusの後には作成日付を入力します。 ※csvファイルを作成した後に元のエクセルファイルの  保存になります。

  • phpMyAdminのCSVインポートで文字化け

    phpMyAdminでCSVデータのインポートを行ったのですが、文字化けしてしまいます。  (正) 17:00~5:00⇒(化け) 17:00~5:00 CSV、MySQLともに文字コードはutf8です。 phpMyAdminの画面から直接日本語レコードを追加すると文字化けせずに表示されます。 --手順-- エクセルで手動で作成したデータをCSV形式で保存した後、テキストエディタでutf8で保存。 phpMyAdminの「インポート」より「LoadDATA文を使用したCSVの読み込み」を選択し、 区切り文字はカンマを選択⇒「エンコーディングの変換」は「なし」を選択⇒実行。 --環境-- WindowsXP XAMPP1.7 MySQL5.5.16 phpMyAdmin3.4.5 どなたか詳しい方いらっしゃいましたら知恵をお貸しください。 よろしくお願いします!

  • CSV入力 手動ではできるのにVBAでは?

    CSVをインポートするときに、手動ではできるのですが、 VBAで実現できないのでおたずねします。 [グループ名][人数] うさぎ 50 ぱんだ 30 こあら 45 のように元データにはIDらしきものが有りません。 これを前提に。。。。 <手動の場合> 1.[外部データ]-[テキストファイル]でcsvファイルを選択 2.現在のデータベースの新しいテーブルに・・を選択して、OK 3.テキストインポートウィザートが表示され、1行目が文字化けしているので、   [設定]でコードページを「日本語JIS」にして[OK]して[次へ] 4.先頭行をフィールド名・・にチェックを入れ、[次へ] 5.フィールドオプションのデータ型をエラーが出ないように変更し、[次へ] 6.「主キーを自動的に設定する」を選択する。 ※ここで左端のフィールドにCSVにはない「ID」が表示される。<===これが目的 7.[設定]でインポート定義「インポート定義1」を保存して[次へ] 8.インポート先のテーブル名「T-001」を入力して[完了] できたテーブルを開くと、IDフィールドに主キーが設定されています。 ここまでをVBAでやりたいのですが、 DoCmd.TransferText acImportDelim, "インポート定義1", "T-001", "C:\File_1.CSV", True とするとIDフィールドができていません。 どうすれば手動でやったときと同じ結果が得られるのでしょうか? よろしくご指導お願いします。

  • txtファイルを「,」で区切ったcsvにしたい

    txtファイルをcsvに変換しようとしています。 要はカンマ「,」でtxtファイルの中の文字を区切りたいのです 「excelで名前を付けて保存」→「保存するファイル形式」でCSVを選択すればできるのですが、excelを持っておらず困っています。 無料でできる簡単ないい方法はありますか? ちなみに、open officeやkingsoftの無料officeで「名前を付けて保存」→「保存するファイル形式」でCSVを試してみたのですが、ダメでした。OSはwin7とMacOS10.8を使っています。winでできればベストですが、ダメならMacでも大丈夫です。

  • accessでcsv、excel保存が出ない

    お世話になります。 Access97でテーブルデータを保存するときなど、CsvデータやExcelデータとして保存できません。保存するときにファイルの種類の選択肢としてこれらが出てきません。なぜででしょう?多分、何かAccessのオプション機能が正しく動いていないからだと思うのですが、どうすれば復活できるでしょうか?以前は、出来ていたのですが。。。

  • csvでの表示がおかしい

    「1.xlsx」というファイルで A1は文字列として設定してあります。 そこに、「4-1」と入力してあります。 これを「1.csv」で保存し、開くと A1は「4月1日」と表示され、ユーザー定義という設定になっています。 なぜでしょうか? これを、開いても4-1と表示されるようにしたいのですがどうすればいいですか? Excel2010 win10