アプリ版:「スタンプのみでお礼する」機能のリリースについて

excel2003を使用しています。

excelで「木偏に船の右側を組み合わせた『ショウ』」という漢字を含むデータをcsv形式で保存し、開き直すと「?」に変わってしまいます。
文字化けしないように出来ないでしょうか?

自分でも調べてみたのですが解決方法が分からないので、どなたかご教授下さい。
よろしくお願いします。

A 回答 (4件)

こんばんは。



Unicode のテキスト出力はありますが、CSV のUnicode 出力はないようですね。

以下をVBEditor の標準モジュールに貼り付けて、Form ツールのボタンなどに付けてあげると良いと思います。なお、Import は、CSVで切り分けてくれないので、ツールの[区切り位置]で、コンマで切ってください。

昔、一度作っただけで、今回は、あまり詳しいところを見ていませんので、まだ不具合があるかもしれません。

もし、マクロがいやでしたら、テキスト (Unicode) で出力して、テキストエディタで、タブコード[\t]を、コンマ[,] に置換してください。Excel 2003 でもあります。

'-------------------------------------------
'Option Explicit

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 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 fName <> ""
  fName = mPath & fName
  '拡張子のチェック
  If InStrRev(fName, ".") = 0 Then
    fName = fName & ".csv"
  ElseIf StrConv(Right(fName, InStrRev(fName, ".") + 1), vbNarrow) <> "csv" Then
    fName = Right(fName, InStrRev(fName, ".")) & "csv"
  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
この回答へのお礼

マクロは使い方がよく分かりませんでした…。すみません。
Unicodeテキストで保存して、タブをカンマに変えてみましたが、Excelでは1つのセルに表示されてしまいます。
区切りがタブのままであれば上手くいきましたので、このまま使おうと思います。
ありがとうございました。

お礼日時:2009/11/19 13:47

Excel2007で試してみたところ、「Unicodeテキスト」という形式があり、これで保存したところタブ区切りのUnicode(UTF-16リトルエンディアン)テキストができました。


コンマ区切りでなくタブ区切りでよければこれが使えるでしょう。
2003にもあるかどうかは確認できません。
    • good
    • 0
この回答へのお礼

2003でも保存でき、上手くいきました。
ご回答ありがとうございました。

お礼日時:2009/11/19 13:43

「木偏に船の右側を組み合わせた『ショウ』」は「?」ですが、


Shift_JISには無い文字ですね。Excelはcsv保存ではShift_JISもど
きのコードしか扱えないので、UNICODEで追加された文字はあらかた
化けます。Excelの新しいバージョンで「csv保存に際して文字コー
ドを選択できる」ようになるのを待つしかないでしょう。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。

お礼日時:2009/11/19 13:41

http://ksbookshelf.com/DW/KanjiIchiran/index.htm …

http://ksbookshelf.com/DW/KanjiIchiran/KanjiIchi …


こういうこと。。。
ですかねぇ~。

自分の環境でも文字化けしましたが、これを試し。。。はしなかったので確実なこたいえませんが。。。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。

お礼日時:2009/11/19 13:40

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