文字列をUTF-8でエンコードするユーザー定義関数
ExcelのワークシートからGoogleの検索結果にハイパーリンクを張ることを考えていたところ、URLの一部として日本語をそのまま渡すのではなく、UTF-8でエンコードする必要があることに気付きました。
そこで、本来の目的とは違うのですが、VBAを使い、文字列をUTF-8でエンコードするユーザー定義関数を作りました。
例えば「あア亜」を「%E3%81%82%E3%82%A2%E4%BA%9C」に変換します。
JavaScriptだとescapeやencodeURIに相当します。
設定
VisualBasicエディタの設定をする必要があります。
ツール-参照設定-参照設定ダイアログで「Microsoft ActiveX Data Objects 2.8 Library」にチェックを入れます。
2.5以上であれば動くようです。
コード
Function encodeUTF8(mytext As String) As String
Dim mystream As New ADODB.Stream
Dim mybinary, mynumber
With mystream
.Open
.Type = adTypeText
.Charset = "UTF-8"
.WriteText mytext
.Position = 0
.Type = adTypeBinary
.Position = 3
mybinary = .Read
.Close
End With
For Each mynumber In mybinary
encodeUTF8 = encodeUTF8 & "%" & Hex(mynumber)
Next
End Function
Dim mystream As New ADODB.Stream
Dim mybinary, mynumber
With mystream
.Open
.Type = adTypeText
.Charset = "UTF-8"
.WriteText mytext
.Position = 0
.Type = adTypeBinary
.Position = 3
mybinary = .Read
.Close
End With
For Each mynumber In mybinary
encodeUTF8 = encodeUTF8 & "%" & Hex(mynumber)
Next
End Function
[ 2012年6月22日 | カテゴリー: Excel | タグ: UTF-8 , VBA , エンコード , 関数 ]
« 配列からリストを作るサンプル | 3Dテレビで遊ぶ »
コメント
-
素晴らしい!!
おかげで救われました。
ありがとうございます。 -
ありがとうございます。
おかげで、どれだけ無駄な時間・労力が省けたか。
感謝します。
どなたか存じ上げませんか、便利なものをありがとうございました。