【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言

ExcelのVBAでAutoCADの操作をしようと勉強中なのですが
参考資料を真似て
--------------------------------------------------------
Function acad_int()
  On Error Resume Next
  Set AcadApp = GetObject(, "AutoCAD.Application")
(上の行でERR'429'Activexコンポーネントはオブジェクトを作成できません。のエラー)
    If Err Then
     Set AcadApp = CreateObject("AutoCAD.Application")
      AcadApp.Visible = True
    End If
  AcadApp.Visible = True
End Function
-----------------------------------------------------------
コピーしてExcelで実行すると、GetObjectで上記( )内のエラ-メッセージがでます。
参照でAutoCAD 2004 タイプライブラリ にはチェック入れています。
また、AutoCADを起動していても、していなくても同じみたいです。
使用しているのは ・AutoCAD LT2004
・オフィス2003Excel
ですが、何せ初心者で始めたばかりでここから進む事ができません。
どうかお力をお貸しください。

A 回答 (3件)

少し勘違いされてるかな?


VB6.0とは、ExcelVBAとは違いますよ。
「Visual Basic6.0」の略なんですが、これはExcelとは別物のソフト
の事です。簡単に言えば、ソフト開発者向けの専用ソフトの事ですよ。
だから、完全にExcelVBAとは別の物です。ただ言語が「Visual Basic」で共通というだけです。
 だから、VB6.0からExcelを参照する時に、アプリケーションから捕ら
える必要があります。その時の記述が参考になるかもしれないと思い
回答しました。

procatopusさんの言うように、標準に搭載しているExcelの機能では、
捕らえきれないかもしれないですね。
私もLTとVBAの組み合わせで様々な処理を考えてきましたが、分かり
ませんね。以前、自分の周りの誰かが、その処理を有効にするクラス
モジュールをどっかで購入したとか聞いた様な気が。。。。。
(この辺は他の回答者を期待して下さい。)

ところで、質問のソースで、
AcadApp.Visible = True
となってますが、この処理は、オブジェクトを非表示から表示にする
処理。つまり、現在のAutoCADが表示となっている?
こんな処理が本当にしたいのですか?あくまでサンプル?

ただ単に、AutoCADを選択したい場合、ExcelとAutoCADが開かれてい
る状態でのコーディングは

Sub test()
AppActivate "AutoCAD"
End Sub

で大丈夫ですよ。しかし、選択から先の処理が本命でしょうから。。

結局、この質問の先に、どういった処理をお考えなんでしょうか?

VBAを使用するなら、スクリプトファイルにコマンドをシーケンシャル
出力して、スクリプトを実行する事による、自動作図を作成するみた
いな処理を考えるのはどうでしょうか?

あくまでアドバイスとしてです。
    • good
    • 0
この回答へのお礼

いろいろご丁寧にありがとうございます。
何分初心者で真似から始めているものですから
ExcelVBAと開発用の言語の処理が同じものと
思っていましたので、引用したものが動作する
のではと勘違いしておりました。
知らないと言うことは恐ろしいものですね。
 土地の形状、面積をAutoCADで作図するより、
Excelで線分作画や面積計算をしたほうが早いのでは
ないかと思い自分なりにできればやって見たいと
思いまして不明な点を質問した訳でした。
 これからも少しづつ勉強していきたいと思います。
不明な点があればご指導ください。
よろしくお願いします。

お礼日時:2007/03/20 17:38

LTは残念ながらExcelVBAには未対応なんで使えませんよ。


LTでもVBAやLispが使用出来る外部ソフトはあるようですが・・・・
ここで検索すれば情報があるはずです。
http://www.mura.sh/
AcadRemocon使えばVBSでカスタマイズができますよ。(現在HPは引越し中のようですね。)

参考URL:http://www.kjufactory.com/bbs/index.asp
    • good
    • 0
この回答へのお礼

そうでしたかExcelVBAではAutoCAD LTとの連携は
できないと言うことですね。
一つ勉強になりました。
ありがとうございました。

お礼日時:2007/03/20 17:20

AutoCADを参照した事が無いので、参考になるか分かりませんが。


VB6.0からExcelを操作する場合には下記の様な記述になります。
変数宣言~オブジェクトセットまでの流れですが。
---------------------------------------------------------
'オブジェクトへの参照を格納する変数を宣言(事前バインディング)
  Dim xlApp  As Excel.Application
  Dim xlBook As Excel.Workbook
  Dim xlSheet As Excel.Worksheet

'変数にオブジェクトの参照を代入します。
'新規 workbookとworksheet オブジェクトを作成します。
  Set xlApp = CreateObject("Excel.Application")
  Set xlBook = xlApp.Workbooks.Add
  Set xlSheet = xlBook.Worksheets(1)
---------------------------------------------------------
変数「AcadApp」の変数宣言文がありませんので、なんとも言えない
んですが、その辺は大丈夫でしょうか?
    • good
    • 0
この回答へのお礼

お忙しいところありがとうございます。
ご指導いただいたExcelからExcelへの
オブジェクト取得はばっちりでした。しかし、
ExcelからAutoCADのオブジェクト取得はだめでした。
Set AcadApp = GetObject(, "AutoCAD.Application")
でやはり同じエラーです。
AutoCAD LT2004は問題なく作動します。
VB6.0とAutoCAD LT2004の関係なのでしょうか?

変数宣言
Dim AcadApp As AutoCAD.AcadApplication
は質問に抜けていました。すみません
入っていました。

お礼日時:2007/03/19 21:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報