[リストへもどる]
一括表示

投稿時間:2003/01/17(Fri) 01:29
投稿者名:Crystal
Eメール:
URL :
タイトル:
Cell(x, x).Value で文字列を取得した時
はじめて質問させていただきます。
よろしくお願いします。

現在、エクセルに記入された文字列をバイナリ−で書き出し、
独自のプログラムでその文字コードを使用するということをやっています。

日本語や英語の場合は問題なくできたのですが、
フランス語を扱うことになって少し困っています。

Dim StringA As String
StringA = Cells(x, x).Value

この時にセルにアクセント記号のついたフランス語(eの上に'がついてたりするやつです)が
入っていたりするとStringAには普通の英語の「e」として出力されてしまします。
確かワードでフランス語を通常のテキスト書き出しするとこういった文字は一番近いと思われる
文字に変換して書き出すと聞きました。これと同じだと思うのですが…。

自分としては言語設定とかを変えれば書き出せるのかなと勝手に想像していますが、
それも面倒なので…。

Win32APIにある、SetLocaleInfoとか使えばいいのかなと思ったりしているのですが、
無知な自分にはいまいち使い方がわからなかったりしてます。
ということでVBAでなんとかならないかなと思い質問してみました。

説明不足で意味不明だったらすみません。
以上よろしくお願いします。

投稿時間:2003/01/18(Sat) 01:42
投稿者名:Starfish
Eメール:
URL :
タイトル:
Re: Cell(x, x).Value で文字列を取得した時
VBAは自信がないのですが、、、

Unicodeのデータをファイルに書くときは、バイト配列でバイナリデータとして
書かないとANSI変換が入って正しくかけません。

Cells(1, 1)のデータをメモ帳で読めるように、Unicodeのテキストファイルで
書いてみましたが、こんなことをやりたいのでしょうか?

Private Sub CommandButton1_Click()
    Dim strCellData As String
    Dim bytCellData() As Byte
    strCellData = Cells(1, 1).Value
    bytCellData = ChrB(&HFF) & ChrB(&HFE) & strCellData
    Open "c:\temp\unicode.txt" For Binary As #1
        Put #1, , bytCellData
    Close #1
End Sub

投稿時間:2003/01/18(Sat) 18:00
投稿者名:Crystal
Eメール:
URL :
タイトル:
Re^2: Cell(x, x).Value で文字列を取得した時
どうも、返信ありがとうございます。

> Unicodeのデータをファイルに書くときは、バイト配列でバイナリデータとして
> 書かないとANSI変換が入って正しくかけません。

なるほど、バイト配列で書き出さないとならないわけですね。
書き出しの時に変換が入っていたとは。

勉強になりました。
どうもありがとうございました。