• ベストアンサー

エクセルでPHPのBIN2HEXと同じ結果を出すには?

以下のようなCSVデータがあったとします。 ビートたけし,男性,1947年生まれ タモリ,男性,1945年生まれ 所ジョージ,男性,1955年生まれ ・・・ 各行の最初のデータ(この場合なら名前)を、エクセルを使って 16進数表記に変換するためには、どのようなやり方が考えられますか? 期待する結果としては ビートたけし,男性,1947年生まれ,E38393E383BCE38388E3819FE38191E38197 タモリ,男性,1945年生まれ,E382BFE383A2E383AA 所ジョージ,男性,1955年生まれ,E68980E382B8E383A7E383BCE382B8 ・・・ こんな感じで、各行の最後にエンコードされたデータが くっついてくれるようなやり方が知りたいのです。 そもそもなぜこんなことを希望しているかというと、現在 はじめてPukiWikiを使って趣味のサイトを作ろうとしています。 手元に千行程度のCSVファイルがあり、1行1ページのデータに 切り分けて、PukiWikiのサイトデータにしようと思っています。 素人考えなのですがファイルの名前をPukiWikiのエンコード方式に 合わせてやれば、できあがった1000個前後のファイルを、 サーバーのwikiディレクトリにFTPしてやるだけでサイトデータが ほぼでき上がるのではないかと思っています。 上記の考え方があっているとして、ファイルのエンコードに PHPのbin2hexという関数が使われているというところまでは なんとか行きついたのですが、エクセルで同じようにエンコード する方法がないかというのが今回の質問の趣旨です。 多分、VBとかで何とかなるのでしょうが、残念ながら知識が なく、自分で作ろうにもままならない状態です。 文字列をUTF-8Nというコードにして扱わないといけないのかな。 よく分かってませんが、いろいろ試してみるとそんな感じでした。 むしのいい質問ですが、どなたかやり方がわかる方がおられましたら 教えていただけると嬉しく思っています。よろしくお願いしますm(_ _)m

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

  • ベストアンサー
  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.2

方法は変換アルゴリズムを独自にコード化したもの、APIを使う物、ADODB.streamを使う物が見つかりますが、最後の方法を試してみました。 ADOS_Encode_UTF8関数(およびそれが呼んでいる関数)は、 http://homepage2.nifty.com/nonnon/SoftSample/SampleModADOS.html から借用してください。 VBEで、ツール/参照設定で、Microsoft AxtiveX Data Objects 2.X Library(xの所は、何種類も存在するので新しいものを選択)に参照設定する必要があります。 UTF8は、1~3バイトのコードが存在するそうですが、LenBでのバイト数取得がなぜかエラーになるので、On Error Resume Nextで誤魔化してあります。「試しにやってみた」レベルですので、ご参考まで。 Sub test() Debug.Print test2("あ") End Sub Function test2(wideChar As String) As String Dim buf As String On Error Resume Next buf = Hex(AscB(MidB(ADOS_Encode_UTF8(wideChar), 1, 1))) buf = buf & Hex(AscB(MidB(ADOS_Encode_UTF8(wideChar), 2, 1))) buf = buf & Hex(AscB(MidB(ADOS_Encode_UTF8(wideChar), 3, 1))) test2 = buf End Function 文字列、E38182が得られます。

horo54
質問者

お礼

回答をつけていただきありがとうございます! 文字コード変換のライブラリがあるんですね。 勉強になりました・・・が、自分の現在のスキルでは どうにも活かせそうにないかも(^^; コードまでいただいて、本当にありがとうございます。 とりあえず回答1のお礼にも書いたようにRubyコードを 拾ってきて今回の件は解決済みですが、エクセルでの 文字コード変換について知識があると今後役に立ちそう なので、いただいたコードを元にして勉強をしてみたいと 思っています。 本当にありがとうございました。

その他の回答 (1)

noname#204879
noname#204879
回答No.1

お示しの文字コードはユニコード(UTF-8)ですよね。 JIS(あるいは S-JIS)コードなら何とか行けそうですが、ユニコードと JISコード とは単一的相関関係がなさそうなので、Excel だけで実現するのは無理だと思います。

horo54
質問者

お礼

ご回答ありがとうございます! ちょっとしたコードを書くぐらいじゃダメなんですね。 少し安易に考えすぎてたみたいです(^^; とりあえず、あれから自分でもさらに調べて http://www.binword.com/blog/archives/000080.html 上記で公開されているRubyスクリプトをUTF-8用に 書き換えて試したところ、なんとか自分の希望する 動作になりました。 ※やはりエクセルではないのですが(^^; 回答つけていただいてありがとうございました。

関連するQ&A