
Excelでセルに入力されている文字列をUTF-8形式にURLエンコードする方法を探しています。
下記のURLでShift-JISにURLエンコードできるものは提供されているのですが、
UTF-8に変換できるものは見つかりませんでした。
。
http://www.vector.co.jp/soft/winnt/net/se369699. …
どうぞよろしくお願いいたします。
No.5ベストアンサー
- 回答日時:
> このソースはVBAを立ち上げてコピペかなにかで使用するのでしょうか、
> それともJScript用にエディタか何かで記述するのでしょうか…
■ マクロ(VBA)で使う場合の手順
1. Excel起動
2. [Alt]+[F11] キーを押して Visual Basic Editor(以下 VBE)起動
3. VBE メニューで [挿入]-[標準モジュール] をクリック
4. 3. で開いたスペースに #4 の以下のコードをコピー&ペースト
ただし、このサイトは URL を投稿すると前後に?記号がくっつく
ので、除去して下さい
5. VBE を閉じる
6. A1 セルに適当な文字を入れ、[Alt]+[F8] を押してマクロ実行
■ワークシートで使う場合の手順
1. 1.~5.まではマクロで使う場合と同じ
2. ワークシートに戻る
3. A1 セルに適当な文字を入力
4. B1 セルに次の数式を入力
=UrlEncode(A1)
KenKen_SPさん、ありがとうございます。
最初、#4のコードが上の8行だけでいいことにきづかずに
手間取りましたが、できてみたら完璧でした。
%E3%83%86%E3%82%B9%E3%83%88になりました。
これで一括変換できるようになります。
ありがとうございました。
No.8
- 回答日時:
Yahoo は渡されたクエリの文字セットをサーバサイトで自動判別
してますので、UTF-8 なのか EUC-JP なのかの検証には不向です。
試すとしたら、明示的に文字セットを指定できる Google でしょう。
ie=UTF-8 という部分が「クエリを UTF-8 で送ります」という意味
です。q= の後に検索キーワードを URL エンコードしたものが続き
ます。実際に下記をクリックすれば試せますが...
■ %E3%83%86%E3%82%B9%E3%83%88
http://www.google.co.jp/search?hl=ja&ie=UTF-8&q= …
http://www.google.co.jp/search?hl=ja&ie=EUC-JP&q …
■ %A5%C6%A5%B9%A5%C8
http://www.google.co.jp/search?hl=ja&ie=UTF-8&q= …
http://www.google.co.jp/search?hl=ja&ie=EUC-JP&q …
したがって、%E3%83%86%E3%82%B9%E3%83%88 は UTF-8 で URLエンコード
されたもので間違いないと思います。
検索エンジンの違いでいろいろなことが変わってくるのですね…
今回はcharset=UTF-8でhtmlを生成するPerlの検索結果に対して、
エクセルデータから書き出した静的なインデックスページからの
直リンクを貼りたかったため、
(説明がややこしくてすみません…)
検索結果用のエンコード部分をまとめて出したかったのですが、
これですべて解決できそうです。
ありがとうございました。
No.7
- 回答日時:
こんにちは。
>表記のとおりにやってみたところ、
>%E3%83%86%E3%82%B9%E3%83%88ではなく、
>%A5%C6%A5%B9%A5%C8
それは、元の漢字コードの問題ではないでしょうか?
私の場合は、Unicode2EUC Unicode から EUC となつていますが、元の文字のコード自体の指定はしていません。JIS で入ってきても同じ結果になります。それは、Yahoo の検索などでみて、検証していただければ分かるはずです。
>%E3%83%86%E3%82%B9%E3%83%88ではなく、
「%A5%C6%A5%B9%A5%C8」こちらは、「テスト」という文字に戻せますので、間違いないと思います。
もし、同じ文字だとしたら、おそらく、文字を一回、別のコードに変換して、それを、EUC に変換しているように思われます。そこに、UTF-8 変換がされているとなると、この話は急に難しくなってくるように思います。
おそらく、Web 関係だとは思いますが、そのサイトを紹介していただくか、周辺的な詳しい事情が分かれば、少し状況は変わるように思うのですが、今の状況では、私の知っている一般的なコード変換からは、それに到達するのは無理かなって思います。
すみません、
複雑すぎてよくわからないのですが、
でもEUCもSHIFT-JISもUTF-8も変換方法があるというのは
今後の参考としてたいへんありがたいです。
ありがとうございました。
またよろしくお願いいたします。
No.6
- 回答日時:
こんばんは。
>希望は、
>%E3%83%86%E3%82%B9%E3%83%88
>という答えなんですが、
これは、「EUC」 といいます。
今回は、必ず、VBEditor のツール-参照設定-Basp21 10 Type Library にチェックして、事前バインディングをしてください。どうも、CreateObject で、実行時バインディングですと、誤動作するようです。
Function Unicode2EUC(strText As String) As String
'要参照設定:BASP21 を使用
Dim bobj As Basp21 '事前バインドを採用
Dim Buf As String
Dim bufArry As Variant
Dim s As Variant
Const EUC As Integer = 2
Set bobj = New Basp21
'スペースの変換、全角スペースを半角に置き換え
strText = Replace(strText, Space(1), " ", , , vbTextCompare)
If Len(strText) <> LenB(StrConv(strText, vbFromUnicode)) Then
strText = VBA.Trim(strText)
bufArry = bobj.Kconv(strText, EUC)
For Each s In bufArry
Buf = Buf & "%" & Hex(s)
Next s
Else
Buf = strText
End If
Unicode2EUC = Buf
End Function
なお、インターネットのWeb サイトに用いる場合は、内容的に変わります。以下のように、半角は、そのまま素通りします。また、y オプションは、半角スペースを「+」と表現します。
Function Unicode2EUCW(strText As String, Optional y As Boolean = False) As String
'要参照設定:BASP21 を使用
Dim bobj As Basp21 '事前バインドを採用
Dim Buf As String
Dim bufArry As Variant
Dim s As Variant
Const EUC As Integer = 2
Set bobj = New Basp21
Do
strText = Replace(strText, Space(2), Space(1), , , vbTextCompare)
Loop Until InStr(strText, Space(2)) = 0
If y Then
'Yahoo 型
strText = Replace(strText, Space(1), "+")
End If
If Len(strText) <> LenB(StrConv(strText, vbFromUnicode)) Then
strText = VBA.Trim(strText)
bufArry = bobj.Kconv(strText, EUC)
For Each s In bufArry
If s > 99 Then
Buf = Buf & "%" & Hex(s)
Else
Buf = Buf & ChrW(s)
End If
Next s
Else
Buf = strText
End If
Unicode2EUCW = Buf
End Function
Wendy02さん、ありがとうございます。
表記のとおりにやってみたところ、
%E3%83%86%E3%82%B9%E3%83%88ではなく、
%A5%C6%A5%B9%A5%C8という答えが返ってきました…。
これがEUCということでしょうか。
でも今後、EUCに変換したいときも来ると思いますので、
一度の質問で両方の解決方法ができて助かりました。
ありがとうございました!
No.4
- 回答日時:
こんにちは。
JScript の encodeURI 関数を使うとか。
JScript の Vesion 5.5が必要ですが、最近の PC なら特に追加
インストールしなくても大丈夫でしょう。こんな感じ。
' // 文字列を URL エンコード(UTF-8)して返す
Public Function UrlEncode(ByVal sText As String) As String
If Len(sText) = 0 Then Exit Function
With CreateObject("ScriptControl")
.Language = "JScript"
UrlEncode = .CodeObject.encodeURI(sText)
End With
End Function
以下は、使い方サンプル。
Sub test()
Const BASEURL As String = "http://www.google.co.jp/search?hl=ja&ie=UTF-8&q="
Dim sTemp As String
' // 実際に UTF-8 でエンコードされたかテスト
sTemp = UrlEncode(Range("A1").Value)
' // B1 セルに UTF-8 でクエリを渡すリンクを貼ってみる
sTemp = BASEURL & sTemp
Range("B1").Select
ActiveSheet.Hyperlinks.Add Anchor:=Selection, _
Address:=sTemp, _
TextToDisplay:=sTemp
End Sub
ご回答ありがとうございます。
素人の質問ですみません。
このソースはVBAを立ち上げてコピペかなにかで使用するのでしょうか、
それともJScript用にエディタか何かで記述するのでしょうか…
No.3
- 回答日時:
こんにちは。
Alt + F11 -> 挿入->標準モジュール
以下を貼り付けて、
Alt + Q で、VBEditor を閉じます。
Function JIS2UTF(ByVal strText As String)
'instr,outtype[,intype]
Dim bobj As Object 'Basp21
Dim bufArry As Variant
Dim buf As Variant
Set bobj = CreateObject("Basp21") 'New Basp21
Const UTF8 As Long = 5
With bobj 'CreateObject("Basp21")
bufArry = .ByteArray(strText)
buf = .KConv(bufArry, UTF8)
End With
JIS2UTF = StrConv(buf, vbUnicode)
Set bobj = Nothing
End Function
ワークシートで、
=JIS2UTF(A1)
とすれば、UTF-8 に変換されたコードが出てきます。今、HTMLファイルにして、IE で確認した範囲では、たぶん、あっているように思います。Vector などにもツールはあると思いますが、セルに対するものは、このようなプログラムが必要になります。
ご説明ありがとうございます。
上記の内容をエクセルで試してみたところ、
テスト → 繝・せ繝・
という答えが返ってきました。
希望は、
%E3%83%86%E3%82%B9%E3%83%88
という答えなんですが、
やり方がどこか間違っているからでしょうか…
No.2
- 回答日時:
こんばんは。
>Bsmtp20070629-587.lzh(119KB)
それは違うものですね。smtp が必要かどうかは分かりませんが、それは、smtp のbugfix版で、今回の内容とはまったく違う内容です。たぶん、それは、元がなければ入れられないような気がします。
Down Load! BASP21-2003-0211.exe (1.44MB) 2003/02/11 Update!
それと、BASP21 が、Vista で動かないという話は聞いていないですね。私のは、Win98からXP まで、このBasp21のKConv で、UTFに変換をしています。これがダメなら、API関数で、VBA作るしかないけれども。
もちろん、Vectorで、変換ツールを探してくるというのも良いはずですが、Excelのセルの文字に対応するということではありませんね。
文字列をUTF-8 に変換
http://www.geocities.co.jp/SilkRoad/4511/vb/utf8 …
お返事ありがとうございます。
インストールはできたのですが、そのあとサイトの説明文を見ても、
どうすればExcelに反映できるのかがわかりませんでした。
何度も質問になってしまいすみません…
これはごく普通のExcel利用者がすぐに理解して活用できるでしょうか…
もう少し簡単な方法があるとうれしいのですが…^^;
No.1
- 回答日時:
こんにちは。
IE オブジェクトを使ってもよいのですが、個々のセル内の文字を変換するなら、Basp21 のタイプライブラリを使って、
http://www.hi-ho.ne.jp/babaq/basp21.html
KconvFile で、JIS からUTF-8 にコードを変換すればよいと思います。
お返事ありがとうございます。
早速、ページから、
Bsmtp20070629-587.lzh(119KB) 2007/06/29をダウンロードして、
Bsendm.exeをダブルクリックしてみましたが、
VistaのせいだからかCan't not エラーが出てしまいインストールできませんでした…
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- Java VScodeのターミナルの文字化けについて 1 2022/09/27 22:19
- PHP phpのメールフォームの完了画面でメール受信のコードを書いています。 1 2023/05/31 11:39
- Visual Basic(VBA) Excel VBA 教えてください。 VBA初心者です。 詳しい方がいましたら教えてください。 下記 3 2023/04/25 11:22
- 数学 数独の解法についてお聞きします 4 2023/05/25 17:15
- HTML・CSS CSSでサイトの背景に画像を組み込みたいのですが反映されません 2 2022/11/22 16:21
- WordPress(ワードプレス) Wordpressの記事URLを自由に決めたい 3 2022/06/02 12:05
- Visual Basic(VBA) エクセルの数式で教えてください。 1 2023/07/31 15:49
- Excel(エクセル) エクセルの書式設定の表示形式で設定した文字を文字列としてコピーしたい 1 2022/12/21 10:41
- その他(プログラミング・Web制作) Sikulix2.0.5(Jython2.7.3)でcsvを読込WEB検索条件にpasteで文字化け 1 2023/03/31 11:02
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EBCDIC⇒SJIS変換の方法
-
セル内の文字列が日本語か英語...
-
ExcelVBA実行後に時々落ちる
-
std::stringからLPCWSTR型への変換
-
数字5桁文字コード?
-
COBOLによる全角・半角混...
-
Excelマクロにて30分単位の計算...
-
「彡」って文字はなんという文...
-
C#でバイナリデータをテキスト...
-
%fと%gについて
-
sedで日本語の置換方法について
-
ふりがなをアルファベット化す...
-
Excel vba で1と10を正確に判断...
-
PL/SQLでSJISの文字コードを取...
-
特殊記号
-
VB.NETのコンソールアプリケー...
-
ASCIIコードの文字化け??
-
VBでバイナリデータについて。
-
ホームページビルダーが勝手にU...
-
文字コード(たぶんユニコード)
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EBCDIC⇒SJIS変換の方法
-
セル内の文字列が日本語か英語...
-
std::stringからLPCWSTR型への変換
-
「彡」って文字はなんという文...
-
ふりがなをアルファベット化す...
-
ExcelVBA実行後に時々落ちる
-
VS 2008(VB.NET)
-
COBOLによる全角・半角混...
-
数値のパック10進数の変換に...
-
Symfowareでのデータ型変換につ...
-
sedで日本語の置換方法について
-
2バイト文字をJEFからSJISに変...
-
フォームのコントロールのバッ...
-
JIS → S-JIS コード変換するには
-
英数字を含む文字列(0-9,A-Z)...
-
Excel vba で1と10を正確に判断...
-
Excelマクロにて30分単位の計算...
-
PL/SQLでSJISの文字コードを取...
-
S-JIS → JIS コード変換するには
-
%fと%gについて
おすすめ情報