zarigani
Sr. メンバー
オフライン
投稿: 61
I'm a zarigani
|
|
オブジェクト変数または.....
« 投稿日: 2012/07/17 - 13:12:12 » |
|
ちょっと初歩的な質問申し訳ありませんが、
これまでWindowsXPで利用してた2009で開発したプログラムを、Windows7上の 2012で利用しようとしたところ、いきなり 「boolstatus = Part.Extension.SelectByID2("平面", "PLANE", 0, 0, 0, False, 0, Nothing, 0)」 の部分で、「オブジェクト変数またはwithブロック変数が・・・・」のエラーがでました。
参照設定をいろいろ変更したのですが、全く関係ないようです。
ちなみに、APIはエクセルマクロの中で利用しております。 また、ソリッドワークスで、マクロの記録を使ったものでは、この部分に関して問題ありません。 したがって、エクセルから実行したら問題が出るようです。 2009の時にはこのようなエラーは出なかったのですが。
同様の問題を経験した方で、何かヒントになるものでもあればよろしくお願いいたします。
|
|
|
|
hisa
カタマリの王様!?
オフライン
投稿: 507
PANDA-Z!!
|
|
Re:オブジェクト変数または.....
« 返信 #1 投稿日: 2012/07/17 - 20:22:27 » |
|
zariganiさん、こんばんは
その行に至った時点で、エラーメッセージが出ているという事は、Partがウマく取得できていないのが原因だと思います。 (SW2012でもSelectByID2は健在なので)
どうやってPartを取得させているかで対処方法は変わると思いますが、もしWindows7の64bit版ですと、Microsoftが64bit環境でのVBA動作を保証していないので、64bit版による問題の可能性もあります。 VSTAであれば、64bit版でもOKなはずです。 と、簡単に言っちゃってますが…
もしくは、SW2012の環境設定によってもPartが取得できない可能性も有りますね。 (アセンブリ上の構成部品からPartを取得しているのであれば、ライトウェイト設定になっているとか)
とりあえず、パッと思いついたことだけ書いてみました。
ご参考まで
|
|
|
|
zarigani
Sr. メンバー
オフライン
投稿: 61
I'm a zarigani
|
|
Re:オブジェクト変数または.....
« 返信 #2 投稿日: 2012/07/17 - 22:07:23 » |
|
hisaさん お久しぶりです。 ありがとうございます。 おっしゃるとおりPartが取得できていないようですね。 そんなことがあるって知りませんでした。
「Microsoftが64bit環境でのVBA動作を保証していないので、」であれば、如何ともしがたいですが、 何か裏技でも見つかればお教えください。
|
|
|
|
zarigani
Sr. メンバー
オフライン
投稿: 61
I'm a zarigani
|
|
Re:オブジェクト変数または.....
« 返信 #3 投稿日: 2012/07/17 - 22:26:05 » |
|
hisaさん 何度も済みません。 別に作成したプログラムでは、Windows7 64ビット版上で問題なく動作しているのがちょっと不可解なんですが。
|
|
|
|
hisa
カタマリの王様!?
オフライン
投稿: 507
PANDA-Z!!
|
|
Re:オブジェクト変数または.....
« 返信 #4 投稿日: 2012/07/17 - 23:45:26 » |
|
そうですね… 保障してないだけで動く可能性はある、というのが厄介なところなんです 正常に動いてくれない処理だけ他言語でライブラリ化してVBA側で呼び出す、なんて事も考えれるかも知れないですが、そのライブラリが動く保障も無いので微妙なところです。
ですので、正常に動いてくれないものはVSTAにすることが一番では無いかと思います…
|
|
|
|
zarigani
Sr. メンバー
オフライン
投稿: 61
I'm a zarigani
|
|
Re:オブジェクト変数または.....
« 返信 #5 投稿日: 2012/07/18 - 09:13:09 » |
|
hisaさん ありがとうございます。 今更あのVISTAに戻る気もないので、動くプログラムと比較しながら、 また、WindowsXP上の2009とも比較しながら検討してみたいと思います。 また、なにかお気づきのことでもあればよろしくお願いいたします。
|
|
|
|
hisa
カタマリの王様!?
オフライン
投稿: 507
PANDA-Z!!
|
|
Re:オブジェクト変数または.....
« 返信 #6 投稿日: 2012/07/18 - 10:35:22 » |
|
あ、VISTAではなくてVSTA(Visual Studio Tools for Application)です。 VBAでは無いマクロです。
ですが、よく読むとExcel上のマクロでしたね… Excel側にもVSTO(Visual Studio Tools for Office:Visual Studioが必要)というものがあるようですが、その辺りは自分も触れたことが無いので何とも言えません
|
|
|
|
katze
Jr. メンバー
オフライン
投稿: 13
I'm a llama!
|
|
Re:オブジェクト変数または.....
« 返信 #7 投稿日: 2012/07/18 - 13:26:50 » |
|
横から失礼します。 私も似たような経験中です。(現在進行形)
環境をWindows7x64に移して、ExcelVBAからSolidWorksを操作するマクロを動かした所、、「オブジェクト変数またはwithブロック変数が・・・・」のエラーになりました。 調べたところ、partが取得できていない。 結局 GetObject だけで 実行時エラー 429 が出てきました。 で、カタマリを検索していましたら、ライセンスキーが必要らしい、ということになり、現在申請中です。(遅いゾSWC)
パソコンにはSolidWorksの複数バージョンがインストールされていたのですが、別件でトラぶって、2011をアンインストール、インストールしました。 が、何とマクロも動くようになりました。 参照していたDLLが入れ替わったのでしょうか。
と言うわけで、何だか分からない〜状態なんですが、ライセンスキーは今後のこともあるので処理しておこうと思っています。
以上参考になるかどうか分かりませんが、私の経過報告です。
|
|
|
|
zarigani
Sr. メンバー
オフライン
投稿: 61
I'm a zarigani
|
|
Re:オブジェクト変数または.....
« 返信 #8 投稿日: 2012/07/18 - 14:48:16 » |
|
hisaさん よく確認せずに勝手にVISTAと読んでしまいました。失礼しました。
katzeさん なんかいろいろなことがあるんですね。ただSWのAPIは何かクセがあって、飼い慣らすのが大変ですね。 その点、仕事のカタマリのサイトは頼もしいです。
|
|
|
|