• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAをExcel2010/2013で利用)

Excel2010/2013でVBA利用時に表示が正しくない問題の解決方法

このQ&Aのポイント
  • Excel2010/2013でVBAを利用したユーザー定義関数を実行すると、結果が正しく表示されない問題が発生しています。
  • Excel2010およびExcel2013(ともにWindows7)で開くと、結果が#VALUE!と表示されます。
  • VBAの参照設定を確認しても問題は解決せず、バージョンの差異もありません。Excel2010またはExcel2013で正しく利用できる方法をご教示ください。

質問者が選んだベストアンサー

  • ベストアンサー
  • cj_mover
  • ベストアンサー率76% (292/381)
回答No.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

kakeha-shi
質問者

お礼

ご回答ありがとうございます。 てっきりExcelのバージョン違いが原因と思い込んでしまい、 OSの32bit/64bitの違いに考えが至りませんでした。 また、教えて頂いたリンク先等を見て原因は分かっても、 自分のスキルでは動作するコードを書くことは出来なかったため、 コードもご提示頂きまして大変感謝しております。 こちらのWindows7 64bit & Excel2013 64bit環境で 利用できますこと、確認いたしました。 本当にありがとうございました!