Wenn du exelst muss Excel ACAD irgendwie dazuladen. Versionsabhänging auch klar.
Der Ansatz den Spieß umzudrehen und Acad zu sagen welche Excel info es verabeiten soll ist besser.
Nun mag das nicht gewünscht sein.
Es gibt natürlich auch die Möglichkeit ACAd egal welches, das weis das Betriebssystem
zu starten un dem Parameter mitzugeben.
Da gibt es die dollsten Möglichkeiten.
Kommandozeile, Textdatei, Script oder ganz abgefahren man kann mit ACAD über Interprocesskommunikation reden.
Das geht über sockets, pipes, Windows messagens was auch immer. Und es gibt auch ne autocad version ohne GUI die man dazu auch einsetzen kann.
Jetzt steinigt mich nicht
ich habe mal ne VB.net Dll geschrieben die als named pipe server fungiert.
Wenn acad nix zu tun hat lauscht es halt an ner Pipe ob was kommt.
Da kann man wunderbar Textbefehle hinschicken und sagen was man wünscht. Das macht das Acad denn auch.
Das geht auch bidirektional (Klar das kann man in VBA auch versuchen nur scheiterterts dann an singlethread von VBA un an den 64 bit OS aufrufen )
Da geht viel
Man kann auch auf den Trichter kommen ACAD nen webserver unterzujubeln.
Was übrigens gar nicht mal soooo kompliziert ist. So microwebserver brauch ab ca. 400 zeilen. Und die gibt es im Web.
Excel kann ja webservices abfragen.
Was auch geht ist ne ACAD instance über VBS zu starten. Nicht aufschreien starten und laden muss man das irgendwie sowieso.
VBS hat den Vorteil das es viele Sachen kapselt. Die Nummer mit den Pipes ist in VBS ein Klacks (sorry Klacks) und nativ ein ziemlicher Seich.
OK das führt alles zu weit.
Gut die installierte ACAD version bekommt man heraus und kann auch die DLLS laden. Das geht !
Führt dan aber zwangsläufig in dei DLL Hölle.
Ne sehr sinple IPC geht mit SQLITE
SQLITE managed automatisch Zugriffe.
Und man kann sehr schön Sachen drin speichern und wieder rauslesen.
Für SQlite gibt es eine VBA anbindung die überall funktioniert. Haben die echt schön gemacht.
Autocad starten mit DVB die aufSQLITE Tabelle lauscht.
Excel selbe SQlite lib geladen benutzt die selbe Tabelle.2 Tabellen anlegen für Befehel und Rückgabe.
Acad guggt nun alle sekunde nach ob sich in der Tabelle Befhl was tut und wen ja schribts das in andre tabelle zurück.
Hintergrund ist das sqlite das ganze Semaphorenhandling transparent macht. Da kann man auch mit 8 Excels und 5 Acads drauf zu greifen ohne da
Sqlite gibt es für 64bit und 32 bit mit nativen VBA client.
Könnt ich mir so vorstellen Excel schreibt mit timestamp user und Befehlsnummer seine wünsche in die SQLITE datenbank
Acad liest die gemäß Timestamp aus und realisiert die Befehele.
Abgearbeitete Befehle werden gelöscht.
Ergebnisse werden mit Abfragenummer und user in die Tabelle zurückgeschrieben um von Excel ausgelsesn zu werden.
Das geht deswegen auch mit Multiuser das dieselbe SQLITE Datenbank von mehreren Processen geöffnet werden kann.
Nach 2 Tagen wenn man Null Plan hat sollte das springen - wenn man VBA kann.
Die SQl Statements sind kein Hexenwerk un zu hunderten im Netz.
Damit würde sich die Problematik darauf reduzieren IRGENDEIN acad zu laden egal ob 32 oder 64 bit
um es dann von
IRGENDEINEM Excel 32 oder 64 Bit zu steuern.
Der Verbindungsknoten ist ja ne SQLITE Datei. Und der ist es wurscht ob 64 bit oder 32 bit oder welche Version von Client auf der herumorgelt.
Mit dem Gedanken würde ich mal spielen.
Lieben Gruß
Thomas
------------------
Wer es nicht versucht, hat schon verlorn
Und bei 3 Typos gibts den vierten gratis !
<<< for sale !
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP