人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

VBAでASCIIコード(漢字)の逆変換を行うコードを作成して下さい。

例:
hogehoge 清水 愛 → hogehoge 清水 愛

よろしくお願いします!

●質問者: ReoReo7
●カテゴリ:インターネット ウェブ制作
✍キーワード:ASCII VBA コード 作成 清水
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● deflation
●20ポイント

メモリ上のUTF-8文字コードをShift-JISに変換するには?」を参考にしてください。

◎質問者からの返答

ありがとうございます。プログラムに困った際の参考にさせて頂こうと思います。


2 ● Silvanus
●100ポイント ベストアンサー

元の文字列がどの様な形(コード、変数型)で提供されるのかが判りませんので

これがご希望の答えになっているのか判りませんが、

元の文字列がVBAのString型変数に格納されているor定数になっているとした場合、

次のマクロで変換出来ます。いつもの如く力業です。

きっともっとスマートな方法があると思いますが、私の能力・知識範囲外です。

Option Explicit

Sub Hatena_ReoReo7_101007_01()

Debug.Print strCnvUcCN("hogehoge 清水 愛xxx�yyy&#xzzz")

End Sub

Function strCnvUcCN(strSrc As String) As String

Dim strCnv As String

Dim intPosP As Integer

Dim intPosS As Integer

Do

intPosP = InStr(1, strSrc, "&#x")

If intPosP Then

intPosS = InStr(intPosP + 3, strSrc, ";")

If (intPosS > 0) And (intPosS - intPosP < 8) Then

strCnv = strCnv & Left(strSrc, intPosP - 1) _

& ChrW(lngHexStr2Lng(Mid(strSrc, intPosP + 3, intPosS - intPosP - 3)))

strSrc = Mid(strSrc, intPosS + 1)

Else

strCnv = strCnv & Left(strSrc, intPosP + 2)

strSrc = Mid(strSrc, intPosP + 3)

End If

Else

strCnv = strCnv & strSrc

strSrc = ""

End If

Loop Until Len(strSrc) = 0

strCnvUcCN = strCnv

End Function

Function lngHexStr2Lng(strHex As String) As Long

Dim lngValT As Long

Dim lngValD As Long

Dim iCount1 As Integer

strHex = StrConv(strHex, vbUpperCase)

For iCount1 = 1 To Len(strHex)

lngValD = InStr(1, "0123456789ABCDEF", Mid(strHex, iCount1, 1)) - 1

If lngValD >= 0 Then

lngValT = lngValT + lngValD * 16 ^ (Len(strHex) - iCount1)

Else

lngHexStr2Lng = -1

Exit Function

End If

Next

lngHexStr2Lng = lngValT

End Function

◎質問者からの返答

できています!!

いろいろなデータ(HTMLドキュメント中に出てくる<title></title>タグで囲まれた日本語アドレス)の変換を試してみましたが、見事に変換できています。

プログラムをシンプルに標準モジュールに貼り付けるだけでできたので感激しています。ありがとうございます!


3 ● a-kuma3
●70ポイント

MSXML を使ってみるのはどうかな?


s = "hogehoge 清水 愛"

Dim xmlDoc As New MSXML2.DOMDocument

xmlDoc.LoadXML ("<test>" & s & "</test>")

MsgBox xmlDoc.FirstChild.Text


参照設定で、Microsoft XML のどれかを設定しておいてね。

◎質問者からの返答

これもできています!参照設定をすれば、シンプルなプログラムで可能なのですね?。

今回はすごく助かりました。本当にありがとうございます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ