
下記URLのサンプルファイルに含まれるVBAで作成されたユーザー定義関数について、
Excel2003(Windows7)の環境で利用することが出来ました。
http://www.relief.jp/itnote/archives/003799.php
しかしながら、Excel2010およびExcel2013(ともにWindows7)で開くと、結果が
#VALUE! と変わってしまい、正しく表示されませんでした。
VBAの参照設定でも同じものにチェックを入れている状態ですが、うまくいきません。
(ただし、Microsoft Excel XX.X Object LibraryやMicrosoft Office XX.X Object Library
などバージョンの差異はあり)
Excel2010またはExcel2013において、このユーザー定義関数を
正しく利用できる方法が分かりましたらご教示いただけますと助かります。
No.1ベストアンサー
- 回答日時:
64ビット版のWindowsをお使いの場合には、
MSScript.ocxが存在しないのでScriptControlも使えません。
ExcelではなくてWindowsが64ビットか32ビットか、の問題のようです。
#私は64ビットでインストール出来るものはすべて64ビットしか経験がないので、
#32ビットなら動くのかどうか、わかりませんが、、、。
『64ビット版OfficeでURLエンコード処理ができない?に対する返信1 』
http://dirtysexyquery.blogspot.jp/2011/10/64offi …
『64ビット環境でのScriptControlの代わり』
http://www.ka-net.org/office/of32.html
ダウンロード『•MSScript.ocxが存在しない64ビット版のWindowsでScriptControlを動作するようにします。』
http://www.eonet.ne.jp/~gakana/tablacus/scriptco …
以上、原因を知ることと、対策の可能性について、参考になると思います。
以下、元々64ビット環境用に書いていたものですが、
結果的に32ビットでもいけるので、汎用性を考えるとこんな感じになると思います。
関数名(2カ所)は、お好きなように。
' ' /// URL文字列(UTF-8)をデコードする(64bitOS対応)
Function DecodeUTF8(ByVal Source As String) As String
Dim oHtmlFile As Object
Dim oElement As Object
Source = Replace(Source, "\", "\\")
Source = Replace(Source, "'", "\'")
Set oHtmlFile = CreateObject("htmlfile")
Set oElement = oHtmlFile.createElement("span")
oElement.setAttribute "id", "response"
oHtmlFile.appendChild oElement
oHtmlFile.parentWindow.execScript _
"document.getElementById('response').innerText " _
& "= decodeURIComponent('" & Source & "');", "JScript"
DecodeUTF8 = oElement.innerText
End Function
ご回答ありがとうございます。
てっきりExcelのバージョン違いが原因と思い込んでしまい、
OSの32bit/64bitの違いに考えが至りませんでした。
また、教えて頂いたリンク先等を見て原因は分かっても、
自分のスキルでは動作するコードを書くことは出来なかったため、
コードもご提示頂きまして大変感謝しております。
こちらのWindows7 64bit & Excel2013 64bit環境で
利用できますこと、確認いたしました。
本当にありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
皆さん定義を教えてください 「...
-
べき乗
-
eの0乗は1ってどういう原理です...
-
1未満と1以下の違い
-
無限から無限を引いたら何にな...
-
合法ロリの年齢的定義は、何歳...
-
性暴力ってどこまでOK,どこから...
-
「logx^2=2logx」が間違って...
-
「互いに素」の定義…「1と2は互...
-
行を入れ替えると行列式が-1倍...
-
精神的健康
-
数学の質問です loge 3=1.1に...
-
エクセルで「”」インチの表示形...
-
「たて目」っていうのは要する...
-
数字の1とは何なのか?
-
最大元と極大元の定義の違いが...
-
ユーザー定義関数をアドイン登...
-
直和分解とは? 同値関係、同値類
-
2変数関数の極値について
-
偶数、奇数、倍数、約数について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
皆さん定義を教えてください 「...
-
べき乗
-
同時(性)の定義の意味、そして...
-
無限から無限を引いたら何にな...
-
eの0乗は1ってどういう原理です...
-
1未満と1以下の違い
-
「たて目」っていうのは要する...
-
最大元と極大元の定義の違いが...
-
直和分解とは? 同値関係、同値類
-
ヘシアンが0の場合どうやって極...
-
性暴力ってどこまでOK,どこから...
-
「logx^2=2logx」が間違って...
-
合法ロリの年齢的定義は、何歳...
-
「互いに素」の定義…「1と2は互...
-
日本語 ことば ひとまわり ふた...
-
√6=√(-2)(-3)=√(-...
-
複雑な家庭とは
-
電磁誘導に法則 V=ーdφ/dt...
-
p⇒q=(¬p)∨qについて
-
lim n→0 =n=0となりますが lim ...
おすすめ情報