| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
 | NVIDIA GTC Paris und ISC High Performance-Konferenz 2025, eine Pressemitteilung
|
Autor
|
Thema: Excel-Werte in CAD-Zeichnung übernehmen (3204 mal gelesen)
|
CHMR Mitglied Student

 Beiträge: 11 Registriert: 04.11.2008
|
erstellt am: 04. Nov. 2008 13:22 <-- editieren / zitieren --> Unities abgeben:         
Hallo, ich habe folgendes Problem: ich möchte gerne Werte aus einer Excel Tabelle in eine CAD-Zeichnung übernehmen (also nur den Text in die jeweilige Zeichnung). Leider kenne ich mich mit den VBA-Befehlen in AutoCad überhaupt nicht aus. Kann mir geholfen werden? Danke im vorraus Gruß Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 04. Nov. 2008 13:50 <-- editieren / zitieren -->
Hi, Willkommen in CAD-de Zur Problemstellung: ich würde Kopieren&Einfügen machen, das braucht kein VBA. Zumindest solange nicht, solange nicht die Aufgabenstellung detaillierter ist (und auch die AutoCAD-Version angegeben ist). - alfred - |
CHMR Mitglied Student

 Beiträge: 11 Registriert: 04.11.2008
|
erstellt am: 04. Nov. 2008 14:45 <-- editieren / zitieren --> Unities abgeben:         
Hallo, danke für die schnelle Antwort. Sorry wegen meiner dürftigen Infos Also: Ich lese bestimmte Dateinamen aus einem Verzeichnis in Excel aus. Diese müssen automatisch bzw. per Button in eine Zeichnungsvorlage(dwg) übertragen werden. Die Zeichnungsvorlage wird dann unter einem neuen Namen bzw. als Kopie in einem variablen Verzeichnis abgespeichert. Die Zeichnung beinhaltet also nur die kopierten Exceldaten (ein bisschen komisch, ich weiß) Ach so ich arbeite hier mit Mechanical Desktop 6 Power Pack. Gruß Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 04. Nov. 2008 14:54 <-- editieren / zitieren -->
Hi, korrigiere mich, wenn ich falsch liege (komm nicht aus der Maschinenbauer-Seite), ist das nicht schon etwas alt? Wenn ich damit richtig liege, dass das auch AutoCAD 2002 beruht, dann habe ich das Problem, dass ich Dir nichts vorschreiben kann, da bei mir 2002 nicht mehr installiert ist. D.h. wir müssen Code direkt hier tippen, dvb übertragen geht (von mir zur Dir) nicht. Welchen Teil von Code hast Du schon und wo hängst Du? - alfred - |
CHMR Mitglied Student

 Beiträge: 11 Registriert: 04.11.2008
|
erstellt am: 04. Nov. 2008 15:06 <-- editieren / zitieren --> Unities abgeben:         
Hallo, Sub Datenübertrag() Dim XlAPP As Object Set XlAPP = GetObject(, "Autocad.Application") Range("B3:H8").Select Selection.Copy Shell "C:\acad.exe /o M:\Zeichnungsvorlage.dwg" ...und dann verließen sie ihn... dieses Modul habe ich in einer Excel-Tabelle begonnen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 04. Nov. 2008 15:11 <-- editieren / zitieren -->
Hi, wenn Du mit XlApp das Excel-Application-Objekt meinst, dann bitte nicht mit GetObject(,"AutoCAD.Application") starten oder wenn du mit XlApp das AutoCAD-Application-Objekt meinst, dann bitte nicht nochmals per 'Shell' starten. Kannst Du mal daneben kommentieren, was Du womit bezweckst (eben um obiges klarer zu machen) Weiters wäre interessant, ob Du das VBA im Excel abarbeitest oder im AutoCAD (kann ich unten auch nicht erkennen) - alfred - |
CHMR Mitglied Student

 Beiträge: 11 Registriert: 04.11.2008
|
erstellt am: 04. Nov. 2008 21:44 <-- editieren / zitieren --> Unities abgeben:         
Hi, Sub Datenübertrag() Dim XlAPP As Object Set XlAPP = GetObject(, "Autocad.Application") Range("B3:H8").Select -> Werte aus Excel Tabelle Selection.Copy -> kopieren Shell "C:\acad.exe /o M:\Zeichnungsvorlage.dwg" -> Zeichnungsvor- lage öffnen Das Programm war nur als Probe gedacht, um festzustellen, wie ich überhaupt von Excel aus eine .dwg öffne. Die Definition von xlAPP hatte bis dahin keinen tieferen Sinn. Auch nicht die Auswahl/Kopie der Zellen. Wie gesagt die VBA-Programmierung von Mechanical Desktop ist für mich Neuland. Die Aufgabe an das Programm ist demnach folgende: 1. Öffne die Zeichnungsvorlage (evtl. Ansicht anpassen/zentrieren) 2. Füge die kopierten Excel-Zellen in die Zeichnung ein (evtl. Größe anpassen/zentrieren) 3. Zeichnung im Stempel/Rahmen benennen und zwar aus einer der Excel- Zellen 4. Zeichnung unter einem neuem Namen in einem beliebigen Vezeichnis speichern. Das alles möchte ich von der Excel-Datei aus steuern, da ich hier eben diese Daten, die ich in die Zeichnungsvorlage speichern möchte, ermittle. Gruß
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 04. Nov. 2008 22:01 <-- editieren / zitieren -->
Hi, 'Set XlAPP = GetObject(, "Autocad.Application")' ==>mit diesem versuchst Du, den Task von AutoCAD zu finden und Dich mit dem ActiveX-Server von AutoCAD zu verbinden, läuft AutoCAD nicht ==> tschuess 'Shell "C:\acad.exe /o M:\Zeichnungsvorlage.dwg"' ==>hier wird zwar AutoCAD gestartet, und zwar ganz egal, ob's schon gestartet ist oder nicht. ==>BTW ich hoffe nicht, dass Dein AutoCAD auf 'C:\' installiert ist
mal aus dem Kopf heraus den AutoCAD-Teil: -------------------------------------- Dim tAcadApp as AcadApplication 'setzt voraus, dass unter Verweisen AutoCAD eingetragen ist
On Error Resume Next set tAcadApp = getObject(,"AutoCAD.Application") 'sieht mal nach, ob AutoCAD schon gestaret if (tAcadApp is nothing) then 'ok, scheint noch nicht gestartet (oder zumindest nicht zugreifbar) set tAcadApp = createObject("AutoCAD.Application") end if if (tAcadApp is nothing) then 'dann ist was schief gegangen call MsgBox("AutoCAD kann nicht gestartet werden, Abbruch") else dim tAcadDoc as AcadDocument set tAcadDoc = tAcadApp.Documents.Open("M:\Zeichnungsvorlage.dwg") 'vorlagenzeichnung oeffnen if tAcadDoc is nothing then call MsgBox("AutoCAD kann Zeichnung nicht öffnen, Abbruch") else '.......<und damit hast du autocad mit der richtigen Zeichnung zur Bearbeitung> '.......<hier Dein Code, was in dieser Zeichnung passieren soll> Err.Clear tAcadDoc.SaveAs("NeuerDateiName.dwg") 'deinen gewünschten Namen einsetzen if Err.Number <> 0 then call MsgBox("Fehler beim Speichern der Zeichnung aufgetreten, Abbruch") else tAcadDoc.Close end if end if end if hoffe es hilft
- alfred - PS: das ist nicht gelaufen, nicht getestet, nicht geprüft also bitte VORHER SPEICHERN DEINER ARBEIT
[Diese Nachricht wurde von a.n. am 04. Nov. 2008 editiert.] |
CHMR Mitglied Student

 Beiträge: 11 Registriert: 04.11.2008
|
erstellt am: 05. Nov. 2008 07:46 <-- editieren / zitieren --> Unities abgeben:         
|
Ex-Mitglied
|
erstellt am: 05. Nov. 2008 08:55 <-- editieren / zitieren -->
Hi, es sollte nicht das Programm fertig ablaufen (schon wegen Pfad-angaben etc.), es sollte Dir als Vorlage dienen, wie Du zum AutoCAD kommst (es geordnet startest) um die Zeichnung mal 'in der Hand' zu haben. Zitat: Das Problem es läuft einfach "so durch". Es öffnet mir nicht einmal die Zeichnung...
dann nimm das 'On Error Resume Next' mal raus und schau, wo er haengt und korrigiere, wenn Du kannst oder lass es mich wissen. Wie ich schon geschrieben habe, das ist blind runtergeschrieben, da koennen schon Tipfehler oder ähnliches enthalten sein. - alfred - |
CHMR Mitglied Student

 Beiträge: 11 Registriert: 04.11.2008
|
erstellt am: 05. Nov. 2008 16:50 <-- editieren / zitieren --> Unities abgeben:         
Hi, ich habe 'On Error Resume Next' auskommentiert aber leider geht immer noch nichts. Das Programm läuft aber von A bis Z ohne Beanstandungen durch. Habe auch schon einige Verweise unter Extras versucht, nur eben ohne Erfolg. Gruß Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CHMR Mitglied Student

 Beiträge: 11 Registriert: 04.11.2008
|
erstellt am: 05. Nov. 2008 16:57 <-- editieren / zitieren --> Unities abgeben:         
|
Ex-Mitglied
|
erstellt am: 05. Nov. 2008 23:04 <-- editieren / zitieren -->
Hi, das Programm tut auch 'NICHTS' effektives, wenn Du nicht in meinen Code eingreifst und zumindest in den Teil etwas hineinschreibst, der von mir entsprechend markiert ist. Oder hast Du schon Änderungen durchgeführt und die werden nicht exekutiert? (dann bräuchte ich Code) Oder bricht VBA irgenwo ab? ==> kannst mal mit Einzelschritten durch das Programm durchgehen und die jeweiligen Erfolge/Misserfolge jeder einzelnen Zeile ansehen. Setze bitte in die ersten Zeilen 'Option Strict On' und 'Option Explicit On'. - alfred - [Diese Nachricht wurde von a.n. am 05. Nov. 2008 editiert.] |
CHMR Mitglied Student

 Beiträge: 11 Registriert: 04.11.2008
|
erstellt am: 06. Nov. 2008 15:03 <-- editieren / zitieren --> Unities abgeben:         
Hi, also ich komme so langsam meinem Ziel näher. Zwei Probleme (noch): 1. tAcadApp = GetObject(, "AutoCAD.Application") Set tAcadDoc = tAcadApp.Documents.Open ("M:\...") ==> kommen sich in die Quere. Soll heißen, das Programm öffnet die Zeichnung erst, wenn AutoCad schon gestartet ist. Vielleicht müsste ich hier auf meine gute alte 'Shell'-Methode zugreifen 2. Mein eigentliches Problem war ja das Einfügen von Zellen in die Zeichnung. Wie sieht hier der Code aus? [Ein Makrorecorder für AutoCad wäre hier eine Spitzensache. Nur leider nutze ich diese Programm an meinem Arbeitsplatz (Installationen also unmöglich...)] Ich kopiere die Zellen mit Selection.Copy aus meiner Tabelle..., und dann? Danke im vorraus (auch für Deine bisherigen Bemühungen) Gruß
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CHMR Mitglied Student

 Beiträge: 11 Registriert: 04.11.2008
|
erstellt am: 06. Nov. 2008 15:05 <-- editieren / zitieren --> Unities abgeben:         
Hi, also ich komme so langsam meinem Ziel näher. Zwei Probleme (noch): 1. tAcadApp = GetObject(, "AutoCAD.Application") Set tAcadDoc = tAcadApp.Documents.Open ("M:\...") ==> kommen sich in die Quere. Soll heißen, das Programm öffnet die Zeichnung erst, wenn AutoCad schon gestartet ist. Vielleicht müsste ich hier auf meine gute alte 'Shell'-Methode zugreifen 2. Mein eigentliches Problem war ja das Einfügen von Zellen in die Zeichnung. Wie sieht hier der Code aus? [Ein Makrorecorder für AutoCad wäre hier eine Spitzensache. Nur leider nutze ich diese Programm an meinem Arbeitsplatz (Installationen also unmöglich...)] Ich kopiere die Zellen mit Selection.Copy aus meiner Tabelle..., und dann? Danke im vorraus (auch für Deine bisherigen Bemühungen) Gruß
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CHMR Mitglied Student

 Beiträge: 11 Registriert: 04.11.2008
|
erstellt am: 06. Nov. 2008 15:17 <-- editieren / zitieren --> Unities abgeben:         
|
Ex-Mitglied
|
erstellt am: 06. Nov. 2008 15:19 <-- editieren / zitieren -->
Hi, Zitat: 1. tAcadApp = GetObject(, "AutoCAD.Application") Set tAcadDoc = tAcadApp.Documents.Open ("M:\...") ==> kommen sich in die Quere. Soll heißen, das Programm öffnet die Zeichnung erst, wenn AutoCad schon gestartet ist. Vielleicht müsste ich hier auf meine gute alte 'Shell'-Methode zugreifen
bevor AutoCAD nicht gestartet ist, kann auch keine Zeichnung geöffnet sein!?! Da hilft auch die Shell-Methode nicht weiter, auch wenn Du im Shell-Aufruf angeben kannst, welche Zeichnung zu starten ist, AutoCAD muss trotzdem gestartet werden.
Zitat: 2. Mein eigentliches Problem war ja das Einfügen von Zellen in die Zeichnung
wie Du auf die Werte in XLS hingreifst, gibt's ohne Ende im Internet, aber auch schon in diesem Forum. Die Frage ist, wie Du die Daten von Excel in AutoCAD haben willst. Auf die schnelle würden mir einfallen: - OLE-Objekt - Text - MText (weiss jetzt nicht, ob der schon in 2002 existiert hat) - Block mit Attributen - alfred - |
CHMR Mitglied Student

 Beiträge: 11 Registriert: 04.11.2008
|
erstellt am: 07. Nov. 2008 15:36 <-- editieren / zitieren --> Unities abgeben:         
Hi, ich war wohl ein bisschen voreilig. Wie kopiere ich jetzt eigentlich Excel-Zellen in die Zeichnung. Oder aber wie kann ich auf eine schon in der Zeichnung bestehende Tabelle (AcadTable?) zugreifen bzw. sie aktivieren um hier meine Zellen einzufügen. Danke im vorraus un schönes WE Gruß Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 07. Nov. 2008 17:51 <-- editieren / zitieren -->
Hi, tschuldigung, aber Tabelle in Acad2002? Nein, nicht wirklich! Oder liege ich mit meiner obigen Vermutung bzgl. Acad2002 falsch? - alfred - |