Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  Zugriff aus Excel

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Zugriff aus Excel (2132 mal gelesen)
ChrisW.
Mitglied


Sehen Sie sich das Profil von ChrisW. an!   Senden Sie eine Private Message an ChrisW.  Schreiben Sie einen Gästebucheintrag für ChrisW.

Beiträge: 5
Registriert: 27.12.2010

Excel 2007
Autocad Architecture 2008
Vista Ultimate 32-Bit

erstellt am: 25. Jan. 2011 22:10    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,
kann  mir jemand sagen wie ich aus Excel auf Autocad zugreifen kann?
Ich würde gerne Blöcke mit ihren Attributen auslesen.

Thx Chris

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 25. Jan. 2011 22:25    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

herzlich willkommen bei CAD-de! 

Eine schon in AutoCAD eingebaute Variante wäre DATENEXTRAKT, da kannst Du gleich direkt Excel schreiben lassen.

Anderenfalls, willst Du's über Programmierung machen, würde ich über COM auf AutoCAD hingreifen, also mit GetObject("AutoCAD.Application") das Interface zu AutoCAD initialisieren und dann damit weiterarbeiten.

Einen kompletten Code jetzt hinschreiben, macht so lange keinen Sinn, solange wir nicht wissen, wie weit Du bist bzw. wie weit Du gekommen bist (weiters ohne zu wissen, was Du letztlich damit machen willst). Auch dann wirst Du wohl kaum den kompletten Code jetzt daher geschrieben bekommen, suchst Du mal (bei CAD-de bzw. im Internet-allgemein) durch, findest Du schon jede Menge Code, wie auf Blockreferenzen und deren Attributreferenzen hinkommst.

- alfred -

------------------
www.hollaus.at

marcosevim
Mitglied
Technischer Konstrukteur


Sehen Sie sich das Profil von marcosevim an!   Senden Sie eine Private Message an marcosevim  Schreiben Sie einen Gästebucheintrag für marcosevim

Beiträge: 163
Registriert: 01.08.2007

erstellt am: 22. Feb. 2011 07:53    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für ChrisW. 10 Unities + Antwort hilfreich

Hallo, ich frag mal hier weiter, da der Titel auch zu meiner Frage passt
Hab folgenden Code getestet:
aber es kommt die Fehlermeldung
Zitat:

Fehler beim kompilieren: Benutzerdefinierter Typ nicht definiert

Ich möchte lernen wie man vom Excel aus das ACAD anspricht.
Dazu das folgende Programm wo einfach ein Kreis im ACAD gezeichent werden soll.
Der Code soll aber im EXCEL VBA gestartet werden.

Code:

Sub test()


On Error Resume Next
Err.Clear
Set ACADServer = GetObject(, "AutoCad.Application.15")
If Err.Number = 0 Then
    AutoCADVersion = "2010"
    Exit Sub
End If

Dim Kreis As AcadCircle
Dim Zentrum(0 To 2) As Double
Dim Radius As Double

Zentrum(0) = 0: Zentrum(1) = 0: Zentrum(2) = 0
Radius = 100.5
Set Kreis = ThisDrawing.ModelSpace.AddCircle(Zentrum, Radius)

End Sub

Danke für einen Tipp.

Grüsse Marco



Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 22. Feb. 2011 08:13    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

wichtig zu der Fehlermeldung wäre die Zeile, in welcher der Fehler zustandekommt! 

Das mit ThisDrawing hätte ich ja schon im >>>anderen Thread<<< erwähnt, das hast Du nicht geändert.
Also:

Code:
Set Kreis = ACADServer.ActiveDocument.ModelSpace.AddCircle(Zentrum, Radius)

Weiters:
AutoCad.Application.15 ... 15 entspricht einer alten AutoCAD-Version, 18 wäre für 2010 richtig.

Und die Verweise im VBA-Projekt hast Du für AutoCAD gesetzt?

- alfred -

------------------
www.hollaus.at

marcosevim
Mitglied
Technischer Konstrukteur


Sehen Sie sich das Profil von marcosevim an!   Senden Sie eine Private Message an marcosevim  Schreiben Sie einen Gästebucheintrag für marcosevim

Beiträge: 163
Registriert: 01.08.2007

erstellt am: 22. Feb. 2011 08:33    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für ChrisW. 10 Unities + Antwort hilfreich

Hallo und Danke.

Die Verweise habe ich gefunden udn gesetzt. Hoffe ich halt. Er schreibt zumindest keine Fehlermeldung mehr.
Er macht nun nämlich gar nichts mehr. Wenn ich mit F8 durchgehe sehe ich das er immer in das erste IF läuft. und dann bei EXIT SUB austeigt.
Wieso?

Grüsse

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

marcosevim
Mitglied
Technischer Konstrukteur


Sehen Sie sich das Profil von marcosevim an!   Senden Sie eine Private Message an marcosevim  Schreiben Sie einen Gästebucheintrag für marcosevim

Beiträge: 163
Registriert: 01.08.2007

ACAD 2012

erstellt am: 22. Feb. 2011 08:35    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für ChrisW. 10 Unities + Antwort hilfreich

Code sieht jetzt so aus:

Code:

Sub test()


On Error Resume Next
Err.Clear
Set ACADServer = GetObject(, "AutoCad.Application.18")
If Err.Number = 0 Then
    AutoCADVersion = "2010"
    Exit Sub
End If

Dim Kreis As AcadCircle
Dim Zentrum(0 To 2) As Double
Dim Radius As Double

Zentrum(0) = 0: Zentrum(1) = 0: Zentrum(2) = 0
Radius = 100.5
Set Kreis = ACADServer.ActiveDocument.ModelSpace.AddCircle(Zentrum, Radius)

End Sub


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 22. Feb. 2011 08:38    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

>> Wenn ich mit F8 durchgehe sehe ich das er immer in das erste IF läuft. und dann bei EXIT SUB austeigt.

... dann nehme ich an, dass AutoCAD 2010 nicht gestartet (oder beschäftigt) ist.

Nimm mal die Versionsnummer raus, die brauchst Du nicht unbedingt (zumindest nicht in diesem Zustand), dann startest Du AutoCAD, wartest bis es vollständig geladen ist, nachfolgend das Makro im Excel.

- alfred -

------------------
www.hollaus.at

marcosevim
Mitglied
Technischer Konstrukteur


Sehen Sie sich das Profil von marcosevim an!   Senden Sie eine Private Message an marcosevim  Schreiben Sie einen Gästebucheintrag für marcosevim

Beiträge: 163
Registriert: 01.08.2007

erstellt am: 22. Feb. 2011 09:06    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für ChrisW. 10 Unities + Antwort hilfreich

Habs mit folgendem Code versucht.
Einmal wenn kein ACAD offen ist und einmal wenn es frisch geöffnet wurde.

Code:

Sub test()


On Error Resume Next
Err.Clear
Set ACADServer = GetObject(, "AutoCad.Application.18")

'If Err.Number = 0 Then
'    AutoCADVersion = "2010"
'    Exit Sub
'End If

Dim Kreis As AcadCircle
Dim Zentrum(0 To 2) As Double
Dim Radius As Double

Zentrum(0) = 0: Zentrum(1) = 0: Zentrum(2) = 0
Radius = 100.5
Set Kreis = ACADServer.ActiveDocument.ModelSpace.AddCircle(Zentrum, Radius)

End Sub


Er läuft ohne Fehlermeldung durch, macht aber nichts.

???

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 22. Feb. 2011 09:40    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

>> Er läuft ohne Fehlermeldung durch, macht aber nichts.

dann mal  'On Error Resume Next'  rausnehmen.

Wenn dann keine Fehler auftreten: könnte sein, dass Du nur mal im AutoCAD  ZOOM Grenzen  machen musst?

- alfred -

------------------
www.hollaus.at

marcosevim
Mitglied
Technischer Konstrukteur


Sehen Sie sich das Profil von marcosevim an!   Senden Sie eine Private Message an marcosevim  Schreiben Sie einen Gästebucheintrag für marcosevim

Beiträge: 163
Registriert: 01.08.2007

erstellt am: 22. Feb. 2011 09:59    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für ChrisW. 10 Unities + Antwort hilfreich

Hallo,

nein Leider.

Der Code sieht nun folgend aus:

Code:

Sub test()


'On Error Resume Next
Err.Clear
Set ACADServer = GetObject(, "AutoCad.Application.18")

'If Err.Number = 0 Then
'    AutoCADVersion = "2010"
'    Exit Sub
'End If

Dim Kreis As AcadCircle
Dim Zentrum(0 To 2) As Double
Dim Radius As Double

Zentrum(0) = 0: Zentrum(1) = 0: Zentrum(2) = 0
Radius = 100.5
Set Kreis = ACADServer.ActiveDocument.ModelSpace.AddCircle(Zentrum, Radius)

End Sub


Es kommt keine Fehlermeldung, Kreis wird aber ganz sicher keiner gezeichent. Weder bei Zomm Grenzen, noch bei STRG+A sieht man etwas ,oder wird etwas markiert.
Unter Extras Vereise sind folgende Sachen aktivert:
- Visual Basic For Applications
- Microsoft Excel 12.0 Object Library
- OLE Automation
- Microsoft Office 12.0 Object Library
- AutoCAD 2010 Type Library

mehr nicht.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 22. Feb. 2011 10:05    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

guck mal PM

- alfred -

------------------
www.hollaus.at

marcosevim
Mitglied
Technischer Konstrukteur


Sehen Sie sich das Profil von marcosevim an!   Senden Sie eine Private Message an marcosevim  Schreiben Sie einen Gästebucheintrag für marcosevim

Beiträge: 163
Registriert: 01.08.2007

erstellt am: 22. Feb. 2011 10:15    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für ChrisW. 10 Unities + Antwort hilfreich

Ok Mach ich auch gleich.
Ev gehts aber nun.
Hab ein paar Sachen die ich so gefunden habe zusammenkopiert.
Schaut nun so aus:

Code:

Option Explicit
Public acad
Public Mspace
Public Drawing
Public sset
Sub init()
On Error Resume Next
    Set acad = GetObject(, "AutoCAD.Application")
    If Err <> 0 Then
        MsgBox "Zuerst das DWG-File öffnen, und dann ausführen!!"
        Exit Sub
    End If
    acad.Visible = True
    Set Mspace = acad.ActiveDocument.ModelSpace
    Set Drawing = acad.ActiveDocument
End Sub

Sub test()
Call init

Dim Kreis As AcadCircle
Dim Zentrum(0 To 2) As Double
Dim Radius As Double

Zentrum(0) = 0: Zentrum(1) = 0: Zentrum(2) = 0
Radius = 100.5
Set Kreis = acad.ActiveDocument.ModelSpace.AddCircle(Zentrum, Radius)

End Sub


Ev wurde das ACAD im Hintergrund geöffnet aber nicht angezeigt.
Ist der CODE oben soweit in Ordnung, oder handel ich mir da später dafür andere Probleme ein?

Grüsse Marco

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 22. Feb. 2011 10:25    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

wenn AutoCAD im Hintergrund geöffnet war, dann hast Du (auch) mit CreateObject gespielt, denn GetObject funkt nur dann, wenn AutoCAD bereits offen ist.

Und ja, ist ein AutoCAD im Hintergrund offen (oder allgemein: sind mehrere AutoCAD-Sessions gestartet), dann hast Du mit GetObject keine Chance zu bestimmen, mit welchem der gestarteten AutoCAD's Dein VBA sich verheiratet.

Hauptsache es funkt jetzt   

Weiter viel Erfolg, - alfred -

------------------
www.hollaus.at

marcosevim
Mitglied
Technischer Konstrukteur


Sehen Sie sich das Profil von marcosevim an!   Senden Sie eine Private Message an marcosevim  Schreiben Sie einen Gästebucheintrag für marcosevim

Beiträge: 163
Registriert: 01.08.2007

erstellt am: 22. Feb. 2011 10:36    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für ChrisW. 10 Unities + Antwort hilfreich

Hallo,

hab nochmal alles geschlossen und wieder neu geöffnet um zu kontrollieren ob im Hintergrund wirklich ein ACAD da ist.
Nun geht es aber ohne Probleme. Der Kreis wird im aktiven ACAD eingetragen. Kein zweites ACAD im Hintergrund.
Ich versteh überhaupt nicht warum es vorher nicht gegangen ist.
Ich werd morgen Früh wenn der Rechner neu hochgefahren wurde nochmal den alten Code verwenden.
Dann weiss ich ganz sicher ob der alte Code in Ordnung ist.

Grüsse und Danke Marco

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz