VBAでXML(JSON)読込の際、参照設定を変更しない方法 への返答
投稿で使用できる特殊コードの説明。(別タブで開きます。)
以下の返答は逆順(新しい順)に並んでいます。
投稿者 とろろ  (社会人)
投稿日時
2014/7/3 12:51:17
魔界の仮面弁士様
お世話になっております。
URLの件、失礼いたしました。
http://rucio.cloudapp.net/ThreadDetail.aspx?ThreadId=18602
で質問させていただいておりました。
参照設定ですが、
> ・MicrosoftXml6.0(3.0もNG)
もしも MSXML2.XMLHTTP を使うことが目的であれば、
WinHttp.WinHttpRequest で代用するという手もあります。
→こちら、このやり方で参照設定不要とできました。
ありがとうございました。
> ・JET Expression Service type Libruary
→こちら、消しても問題なく動くことを確認いたしました。
なぜ追加したのか・・・失礼いたしました。
> ・MicrosoftScriptingRuntime
こちらなのですが、エラーが出てしまう方のPCを確認したところ
SCRRUN.DLLが既にインストールされておりまして、私のPCと
バージョンも全く同じものでした。
しかし、こちらのみ参照設定を追加したバージョンのACCESSでも
エラーが起きてしまいます。
他にはどのような原因が考えられますでしょうか。
なにか元々の参照設定とケンカでもしているのか・・・
なお使いたいオブジェクトはDictionaryです。
また、案についてのご意見もありがとうございます。
急遽PHPで作り直す?とも言われてしまい戸惑っておりますが、
頂いたご意見を参考に上長と相談したいと思います。
どうぞよろしくお願いいたします。
お世話になっております。
URLの件、失礼いたしました。
http://rucio.cloudapp.net/ThreadDetail.aspx?ThreadId=18602
で質問させていただいておりました。
参照設定ですが、
> ・MicrosoftXml6.0(3.0もNG)
もしも MSXML2.XMLHTTP を使うことが目的であれば、
WinHttp.WinHttpRequest で代用するという手もあります。
→こちら、このやり方で参照設定不要とできました。
ありがとうございました。
> ・JET Expression Service type Libruary
→こちら、消しても問題なく動くことを確認いたしました。
なぜ追加したのか・・・失礼いたしました。
> ・MicrosoftScriptingRuntime
こちらなのですが、エラーが出てしまう方のPCを確認したところ
SCRRUN.DLLが既にインストールされておりまして、私のPCと
バージョンも全く同じものでした。
しかし、こちらのみ参照設定を追加したバージョンのACCESSでも
エラーが起きてしまいます。
他にはどのような原因が考えられますでしょうか。
なにか元々の参照設定とケンカでもしているのか・・・
なお使いたいオブジェクトはDictionaryです。
また、案についてのご意見もありがとうございます。
急遽PHPで作り直す?とも言われてしまい戸惑っておりますが、
頂いたご意見を参考に上長と相談したいと思います。
どうぞよろしくお願いいたします。
投稿者 魔界の仮面弁士  (社会人)
投稿日時
2014/7/1 17:33:23
> 以前、こちらでXMLの読込についてご相談させていただいた、とろろといいます。
参考情報として、当時の URL を示してもらえると助かります。
> 参照設定を変更するとエラーが出てしまい
一応、References コレクションを使うことで、参照設定が破損しているかどうかを調べたり
参照設定を動的に行うといったことも可能ですが、そもそも Access を使うのであれば、
バージョン違いで運用するのではなく、本来はバージョンごとに異なる
mdbファイル(あるいはaccdbファイル)を用意するべきだと思いますよ。
とりあえず、参照設定を外して、レイトバインドで実装してみては如何でしょうか。
> ・MicrosoftXml6.0(3.0もNG)
いわゆる MSXML6 ですね。Microsoft Download Center からダウンロード入手可能です。
XML の解析が必要であればインストールしておきましょう。(Win9x は非対応)
http://support.microsoft.com/kb/269238/ja
http://0xc000013a.blog96.fc2.com/blog-entry-194.html
(3.0 については、インストールされていない環境のほうが珍しいのですけれどね…)
もしも MSXML2.XMLHTTP を使うことが目的であれば、
WinHttp.WinHttpRequest で代用するという手もあります。
http://d.hatena.ne.jp/ardarim/20070114/1168771797
> ・JET Expression Service type Libruary
使っている様子が無く、外しても動作に影響が無いようであれば、
参照設定から外してしまっても良いかも?
> ・MicrosoftScriptingRuntime
本体は SCRRUN.DLL ですね。
最近の OS では、システムコンポーネントの一部となっていますが、
Win9x や NT4 では初期インストールされていないため、別途、
Windows Scripting Library をインストールする必要があったかと思います。
使いたいオブジェクトが、Dictionary なのか FileSystemObject なのか分かりませんが、
こちらもレイトバインドで呼び出してみて、呼び出せないようであれば、インストールを
行うように指示するメッセージを組み込んでみては如何でしょう。
> 1:本機能を使用できるPCを制限する
それらの機能を利用できるかどうかをテストするための、
チェックスクリプトを用意しておくと良いかもしれませんね。
> 2:上記参照設定を必要としない方法があれば、その改修を行う
「車輪の再発明」や「追加調査」をするのが良いのか、環境を整備するほうが良いか、
作業コストと相談になりそうですね。
参考情報として、当時の URL を示してもらえると助かります。
> 参照設定を変更するとエラーが出てしまい
一応、References コレクションを使うことで、参照設定が破損しているかどうかを調べたり
参照設定を動的に行うといったことも可能ですが、そもそも Access を使うのであれば、
バージョン違いで運用するのではなく、本来はバージョンごとに異なる
mdbファイル(あるいはaccdbファイル)を用意するべきだと思いますよ。
とりあえず、参照設定を外して、レイトバインドで実装してみては如何でしょうか。
Dim req As Object
Set req = CreateObject("MSXML2.XMLHTTP")
Dim parser As Object
Set parser = CreateObject("MSXML2.DomDocument")> ・MicrosoftXml6.0(3.0もNG)
いわゆる MSXML6 ですね。Microsoft Download Center からダウンロード入手可能です。
XML の解析が必要であればインストールしておきましょう。(Win9x は非対応)
http://support.microsoft.com/kb/269238/ja
http://0xc000013a.blog96.fc2.com/blog-entry-194.html
(3.0 については、インストールされていない環境のほうが珍しいのですけれどね…)
もしも MSXML2.XMLHTTP を使うことが目的であれば、
WinHttp.WinHttpRequest で代用するという手もあります。
http://d.hatena.ne.jp/ardarim/20070114/1168771797
> ・JET Expression Service type Libruary
使っている様子が無く、外しても動作に影響が無いようであれば、
参照設定から外してしまっても良いかも?
> ・MicrosoftScriptingRuntime
本体は SCRRUN.DLL ですね。
最近の OS では、システムコンポーネントの一部となっていますが、
Win9x や NT4 では初期インストールされていないため、別途、
Windows Scripting Library をインストールする必要があったかと思います。
使いたいオブジェクトが、Dictionary なのか FileSystemObject なのか分かりませんが、
こちらもレイトバインドで呼び出してみて、呼び出せないようであれば、インストールを
行うように指示するメッセージを組み込んでみては如何でしょう。
> 1:本機能を使用できるPCを制限する
それらの機能を利用できるかどうかをテストするための、
チェックスクリプトを用意しておくと良いかもしれませんね。
> 2:上記参照設定を必要としない方法があれば、その改修を行う
「車輪の再発明」や「追加調査」をするのが良いのか、環境を整備するほうが良いか、
作業コストと相談になりそうですね。
投稿者 とろろ  (社会人)
投稿日時
2014/7/1 08:51:30
おはようございます。
以前、こちらでXMLの読込についてご相談させていただいた、とろろといいます。
その節は大変お世話になりました。無事開発は終わった・・・はずだったのですが、
なんとPCのスペックが社員全員バラバラで、参照設定を変更するとエラーが出てしまい
フォールバックとなってしまいました。
追加した参照設定は以下の3つで、どれもNGでした。。
・MicrosoftXml6.0(3.0もNG)
・JET Expression Service type Libruary
・MicrosoftScriptingRuntime
これらを使用せず、XMLやJsonを読み込み、解析することはできるのでしょうか。
今の案では、
1:本機能を使用できるPCを制限する
2:上記参照設定を必要としない方法があれば、その改修を行う
使用しているのは
ACCESS2000、OSはXP,Vista,Windows7など様々です。
Officeも2000と2008が混在しております。
恐れ入りますが、よろしくお願いいたします。
以前、こちらでXMLの読込についてご相談させていただいた、とろろといいます。
その節は大変お世話になりました。無事開発は終わった・・・はずだったのですが、
なんとPCのスペックが社員全員バラバラで、参照設定を変更するとエラーが出てしまい
フォールバックとなってしまいました。
追加した参照設定は以下の3つで、どれもNGでした。。
・MicrosoftXml6.0(3.0もNG)
・JET Expression Service type Libruary
・MicrosoftScriptingRuntime
これらを使用せず、XMLやJsonを読み込み、解析することはできるのでしょうか。
今の案では、
1:本機能を使用できるPCを制限する
2:上記参照設定を必要としない方法があれば、その改修を行う
使用しているのは
ACCESS2000、OSはXP,Vista,Windows7など様々です。
Officeも2000と2008が混在しております。
恐れ入りますが、よろしくお願いいたします。
参照設定をはずした上で、
から、
に変更してみてください。
そもそも後者ですらエラーになってしまうようであれば、実行環境そのものに
問題がある可能性が高いので、ライブラリ( WSH )の更新や Windows Update の
適用を検討した方が良いかもしれません。