
下記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で質問しましょう!
似たような質問が見つかりました
- Word(ワード) Word 2016のマクロを Word 2021のWordでキー動作させたい 3 2023/04/12 16:14
- その他(パソコン・スマホ・電化製品) CMD等でPC操作(excel開く等)を自動化させたい 1 2023/03/15 09:53
- Excel(エクセル) マクロの付いたExcelが開けません 3 2023/02/01 10:54
- Visual Basic(VBA) VBAでArrayListを使う為の「mscorlib.tlb」の参照設定について 3 2022/03/23 19:45
- Word(ワード) office 2021へ自分用のクイックアクセスとマクロをコピーしたい 2 2023/03/11 21:15
- Excel(エクセル) エクセル・スプレッドシートで、一定数を超えたらゼロから再累計する方法 8 2022/05/28 03:52
- Visual Basic(VBA) マクロについて教えてください。 4 2023/06/06 09:06
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
皆さん定義を教えてください 「...
-
べき乗
-
「互いに素」の定義…「1と2は互...
-
1未満と1以下の違い
-
日本語 ことば ひとまわり ふた...
-
無限から無限を引いたら何にな...
-
ACCESS VBAでインポート定義の場所
-
ヘシアンが0の場合どうやって極...
-
√6=√(-2)(-3)=√(-...
-
なぜ、直角三角形ではないのにs...
-
eの0乗は1ってどういう原理です...
-
複雑な家庭とは
-
「logx^2=2logx」が間違って...
-
tanhXの近似式について
-
1wordとは、何文字ですか?
-
数字の1とは何なのか?
-
ACCESS IIF関数 複数条件の設...
-
数学の両辺2乗と√について教え...
-
e<3の証明を教えてください。
-
ACCESSでTXTにデータエクスポー...
おすすめ情報