- ベストアンサー
Excel2010/2013でVBA利用時に表示が正しくない問題の解決方法
- Excel2010/2013でVBAを利用したユーザー定義関数を実行すると、結果が正しく表示されない問題が発生しています。
- Excel2010およびExcel2013(ともにWindows7)で開くと、結果が#VALUE!と表示されます。
- VBAの参照設定を確認しても問題は解決せず、バージョンの差異もありません。Excel2010またはExcel2013で正しく利用できる方法をご教示ください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
64ビット版のWindowsをお使いの場合には、 MSScript.ocxが存在しないのでScriptControlも使えません。 ExcelではなくてWindowsが64ビットか32ビットか、の問題のようです。 #私は64ビットでインストール出来るものはすべて64ビットしか経験がないので、 #32ビットなら動くのかどうか、わかりませんが、、、。 『64ビット版OfficeでURLエンコード処理ができない?に対する返信1 』 http://dirtysexyquery.blogspot.jp/2011/10/64officeurl1.html 『64ビット環境でのScriptControlの代わり』 http://www.ka-net.org/office/of32.html ダウンロード『•MSScript.ocxが存在しない64ビット版のWindowsでScriptControlを動作するようにします。』 http://www.eonet.ne.jp/~gakana/tablacus/scriptcontrol.html 以上、原因を知ることと、対策の可能性について、参考になると思います。 以下、元々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環境で 利用できますこと、確認いたしました。 本当にありがとうございました!