micc Posté(e) le 14 décembre 2004 Posté(e) le 14 décembre 2004 Bonsoir à tous J’ai fais une application vba dans Excel et dans la partie « ouverture du fichier dwg » je cherche le moyen en vba de détecter si autocad est déjà ouvert, ceci pour mettre dans mon code la condition suivante :[si AutoCAD est ouvert j’ouvre le fichier][sinon je démarre AutoCAD puis j’ouvre le fichier] Tout ça pour éviter d’ouvrir plusieurs fois AutoCAD bien sur Merci d’avance pour votre aideA+
eagle4 Posté(e) le 14 décembre 2004 Posté(e) le 14 décembre 2004 Salut micc Voici le code que j'utilise en VB6 dim acadApp As AcadApplicationOn Error Resume NextSet acadApp = GetObject(, "AutoCAD.Application")If Err Then Err.Clear Set acadApp = CreateObject("AutoCAD.Application") If Err Then MsgBox Err.Description Exit Sub End IfEnd If Regarde devant, derrière apporte des regrets, les côtés envies et jalousie
Serge Posté(e) le 14 décembre 2004 Posté(e) le 14 décembre 2004 eagle4, Je déclarerais acadApp global afin de pouvoir utiliser l'objet partout. e même, il faudrait penser à fermer cet objet à la sortie de la routine, sans quoi tu pourrais avoir consommation de mémoire inutilement. Exemple: Public acadApp As AcadApplication Autre chose, il te manque un Else entre Err.ClearSet acadApp = CreateObject("AutoCAD.Application") Exemple:Err.ClearElseSet acadApp = CreateObject("AutoCAD.Application") Serge
micc Posté(e) le 14 décembre 2004 Auteur Posté(e) le 14 décembre 2004 Salut Serge, eagle4 et le forum Voici les quelques lignes du code que j’utilise pour ouvrir le fichier dans AutoCAD, mais je ne comprend pas très bien comment utiliser votre methode, vous pouvez faire un exemple d’apres le code suivant ? histoire de ne pas fondre les neurones. :) Private Sub CommandButton1_Click() Dim AcadApp As AutoCAD.AcadApplication ' On lance AutoCAD Set AcadApp = New AutoCAD.AcadApplication AcadApp.Visible = True AcadApp.WindowState = acMax ' On ouvre le fichier dans AutoCAD AcadApp.Documents.Open (mon_fichier_dwg) AcadApp.Documents.Application.ZoomExtents End Sub Merci A+
Serge Posté(e) le 14 décembre 2004 Posté(e) le 14 décembre 2004 micc, Tu ne peux simplement faire un New. Tu aurais un objet compatible mais avec rien dedans. Le GetObject demande à Windows de retrouver l'objet ouvert. Je te conseille d'examiner le fichier C:\Program Files\AutoCAD 200xx\Sample\ActiveX\ExtAttr\ExtAttr.xls qui contient une macro faisant exactement ce que tu cherche. Serge
eagle4 Posté(e) le 15 décembre 2004 Posté(e) le 15 décembre 2004 If Err Then Err.Clear Set acadApp = CreateObject("AutoCAD.Application") If Err Then MsgBox Err.Description Exit Sub End IfEnd If Salut Serge et micc Le "ELSE" ne manque pas : je teste si AUTOCAD est ouvert par getobjectsi il y a erreur j'efface celle-ci ET j'ouvre AUTOCAD : createobject.Si il y a de nouveau erreur alors j'imprime l'erreur et je sort du Sub Pour la déclaration d'acadApp, tu as raison il vaut mien la rendre "Public" --------------------------------------------------------------------- Pour micc Voici le code que j'utilise : Public acadApp As AcadApplicationPublic acadDoc As AcadDocumentOn Error Resume NextSet acadApp = GetObject(, "AutoCAD.Application")If Err Then Err.Clear Set acadApp = CreateObject("AutoCAD.Application") If Err Then MsgBox Err.Description Exit Sub End IfEnd IfacadDoc.Open courant ' ouvre le dessin dont le nom est contenu dans la variable "courant" acadDoc.Application.ZoomExtents Eagle4 Regarde devant, derrière apporte des regrets, les côtés envies et jalousie
Serge Posté(e) le 15 décembre 2004 Posté(e) le 15 décembre 2004 eagle4, Tu as raison pour le else. Ça doit être à cause du manque de tabulations que j'ai mal lu le code. Serge
Pako Posté(e) le 16 décembre 2004 Posté(e) le 16 décembre 2004 Intéressant comme sujet ! Il serait intéressant de pouvoir entré la tabulation dans l'éditeur du forum. Mais d'après le webmaster , cela n'existe pas, dommage ! .....Public acadApp As AcadApplication.....Public acadDoc As AcadDocument .....On Error Resume Next .....Set acadApp = GetObject(, "AutoCAD.Application").....If Err Then..........Err.Clear .....Set acadApp = CreateObject("AutoCAD.Application").....If Err Then..........MsgBox Err.Description .....End If.....End If.....Exit Sub Ça facilité la lecture ...... l'ACADien ! http://img124.exs.cx/img124/7999/start.gif
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant