Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

VBAでのEUCコードとSJISコードの相互変換

1,359 views
Skip to first unread message

のっこ60

unread,
Oct 27, 2008, 3:51:00 AM10/27/08
to
VBAでメモリ上(String変数)で、EUCコードとSJISコードを相互変換する方法はないでしょうか?

TAKAHASHI Hisanori

unread,
Oct 27, 2008, 4:24:18 AM10/27/08
to

"のっこ60" <???6...@discussions.microsoft.com> wrote in message news:5E42196B-FFFD-42FE...@microsoft.com...
> VBAでメモリ上(String変数)で、EUCコードとSJISコードを相互変換する方法はないでしょうか?

以下のページが参考になるかもしれません

NKF32.DLL で文字コード変換
http://www.geocities.co.jp/SilkRoad/4511/vb/nkf32dll.htm

--
TAKAHASHI Hisanori

SETO Sohei

unread,
Oct 30, 2008, 7:03:49 PM10/30/08
to
"TAKAHASHI Hisanori" <jpa...@microsoft.com> wrote in article
<ezzN01AO...@TK2MSFTNGP05.phx.gbl> ;

>
>"のっこ60" <???6...@discussions.microsoft.com> wrote in message
>news:5E42196B-FFFD-42FE...@microsoft.com...
>> VBAでメモリ上(String変数)で、EUCコードとSJISコードを相互変換する方法はないでしょうか?
>
>NKF32.DLL で文字コード変換

EUCな方(?)にとっては nkf が伝統的というかメジャーですが,
VBA的には ADODB.Stream が標準機能内で(ADOの参照設定は必要ですが),
かつ扱いやすく, 品質も高いですよ。

ちょっと気をつけたいとのは「EUC/SJIS テキストを String 変数に」というのは
止めといた方が良いと思います。String変数は,常に Unicode だと思いますので。

* * * *

未試行・未デバグですが, 雰囲気だけ。
バッファをEUC StreamにWriteして, Streamオブジェクトごとコピーして,
SJIS StreamをバッファにReadするだけです。

Public Sub euc2sjis(ByRef bufEUC() As Byte, ByRef bufSJIS() As Byte)
Dim adoStreamEUC As ADODB.Stream
Dim adoStreamSJIS As ADODB.Stream

Set adoStreamEUC = New ADODB.Stream
With adoStreamEUC
.Open
.Type = adTypeBinary
.Charset = "EUC-JP"
End With

Set adoStreamSJIS = New ADODB.Stream
With adoStreamSJIS
.Open
.Type = adTypeBinary
.Charset = "SJIS"
End With

adoStreamEUC.Write bufEUC
adoStreamEUC.ToCopy adoStreamSJIS
adoStreamEUC.Read bufSJIS

adoStreamEUC.Close
adoStreamSJIS.Close

Set adoStreamEUC = Nothing
Set adoStreamSJIS = Nothing
End Sub

--
SETO Sohei [ PGP Key ID:0x5DF0FA4D ]
Gobo-city, Wakayama, JAPAN
mailto: s...@creamy.nax.ne.jp

0 new messages