Excel (一般機能)

Excelの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 8 : Excel 2007)
ENCODEURLを使用したい
投稿日時: 18/04/13 12:23:29
投稿者: えあろん

ENCODEURL関数を使用したいのですが
出来ません。
 
指定した文字列をURLエンコードした結果を返す
というものなのですが、エクセルのバージョンによっては
使用出来ないようです。これに値するような関数は他に
ありますでしょうか?
 
 
 
 

回答
投稿日時: 18/04/13 13:13:40
投稿者: んなっと

ユーザー定義関数を使うのはどうですか?
 
【手順】
 
 Alt+F11 同時押し
→挿入
→標準モジュール
→右の白くて大きいところに
 
Function EncURL(str As String) As String
  With CreateObject("ScriptControl")
    .Language = "JScript"
    EncURL = .CodeObject.encodeURIComponent(str)
  End With
End Function
 
→Alt+F11 で元の画面に戻って
 
  A     B
1 猫 %E7%8C%AB
2 犬 %E7%8A%AC
 
B1
=EncURL(A1)
下方向・↓

投稿日時: 18/04/13 14:35:40
投稿者: えあろん

んなっと様
 
返信ありがとうございます。
確かに結果は反映されました!
ありがとうございます。
 
 
一般機能の質問となるので申し訳ないのですが
こちらはVBAにも使用できるのでしょうか?
 
 
URL(i) = "https://transit.yahoo.co.jp/search/result?flatlon=&" & _
"from=" & Application.WorksheetFunction.EncodeURL(出発(i)) & _
"&tlatlon=" & _
"&to=" & Application.WorksheetFunction.EncodeURL(到着(i))
 
を定義して頂いた関数で
 
URL(i) = "https://transit.yahoo.co.jp/search/result?flatlon=&" & _
"from=" & Application.WorksheetFunction.EncURL(出発(i)) & _
"&tlatlon=" & _
"&to=" & Application.WorksheetFunction.EncURL(到着(i))
 
としてみましたが実行できませんでした。
以前下記で質問したのですが、クレームが出たのでクローズ
させました。
http://www.moug.net/faq/viewtopic.php?t=76950
 
私が調べた結果このEncodeURL関数がエクセルのバージョンによっては
使用できないとのことなので実行できないのかと思ったのですが。。。
なにかヒントがあればご教示頂ければ幸いです。
 

回答
投稿日時: 18/04/13 14:49:10
投稿者: んなっと

前に
Application.WorksheetFunction.
をつけないでください。
 
EncURL(出発(i)) で。

投稿日時: 18/04/13 15:26:22
投稿者: えあろん

んなっと さんの引用:
前に
Application.WorksheetFunction.
をつけないでください。
 
EncURL(出発(i)) で。

 
なるほど!!ユーザー定義関数だから
Application.WorksheetFunctionをとるんですね!
こちらも実行できました!
 
最後に恐縮なのですが、
Do While IE.Busy Or IE.readyState <> READYSTATE_COMPLETE
時点でオブジェクト変数またはwithブロック変数が設定されてません。と
エラーがでます。
 
なので
Dim READYSTATE_COMPLETE As Object
と宣言させてみたのですが実行できませんでした。。
 
なにかヒントがあれば頂けますでしょうか?
 
当初の質問内容においては解決しておりますので
本日回答がなければ本日中に解決済みとして処理させて
頂きますね。

投稿日時: 18/04/13 16:11:15
投稿者: えあろん

えあろん さんの引用:
んなっと さんの引用:
前に
Application.WorksheetFunction.
をつけないでください。
 
EncURL(出発(i)) で。

 
なるほど!!ユーザー定義関数だから
Application.WorksheetFunctionをとるんですね!
こちらも実行できました!
 
最後に恐縮なのですが、
Do While IE.Busy Or IE.readyState <> READYSTATE_COMPLETE
時点でオブジェクト変数またはwithブロック変数が設定されてません。と
エラーがでます。
 
なので
Dim READYSTATE_COMPLETE As Object
と宣言させてみたのですが実行できませんでした。。
 
なにかヒントがあれば頂けますでしょうか?
 
当初の質問内容においては解決しておりますので
本日回答がなければ本日中に解決済みとして処理させて
頂きますね。

 
 
調べた結果、Do While IE.Busy Or IE.readyState <> READYSTATE_COMPLETE
をDo While IE.Busy Or IE.readyState <> 4
としてみたら実行できました。
んなっと様ご回答ありがとうございました!