<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: EXCEL VBA pour extraire les données des objets d'un dessin de AUTOCADMAP in AutoCAD Map 3D Developer Forum</title>
    <link>https://forums.autodesk.com/t5/autocad-map-3d-developer-forum/excel-vba-pour-extraire-les-donnees-des-objets-d-un-dessin-de/m-p/7425328#M802</link>
    <description>&lt;P&gt;I do not know French and use Google translate to see your question.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;When you ask help, you'd better describe what issue you have run into with your code. Does it run at all, or it brings error at some point?&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I'd guess the code is not runable, or at least it would not run through. As matter of fact, if you click menu in VBA editor (Excel's VBA) "Debug-&amp;gt;Compile VBA Project...", you likely get error.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Here are somethings regarding your code, see my comments in your code (in blue)&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/808136"&gt;@SEPPT&lt;/a&gt; wrote:&lt;BR /&gt;
&lt;P&gt;...&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;SPAN&gt;Sub&lt;/SPAN&gt; INFO&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
&amp;nbsp;
&lt;SPAN&gt;Dim&lt;/SPAN&gt; ORD &lt;SPAN&gt;As&lt;/SPAN&gt; ODRecord
&lt;SPAN&gt;Dim&lt;/SPAN&gt; BlocRef &lt;SPAN&gt;As&lt;/SPAN&gt; AcadBlockReference
&lt;SPAN&gt;Dim&lt;/SPAN&gt; poly &lt;SPAN&gt;As&lt;/SPAN&gt; AcadLWPolyline
&lt;SPAN&gt;Dim&lt;/SPAN&gt; ligne &lt;SPAN&gt;As&lt;/SPAN&gt; AcadLine
&amp;nbsp;
&lt;SPAN&gt;On&lt;/SPAN&gt; &lt;SPAN&gt;Error&lt;/SPAN&gt; &lt;SPAN&gt;Resume&lt;/SPAN&gt; &lt;SPAN&gt;Next&lt;/SPAN&gt;
&amp;nbsp;
&amp;nbsp;
        &lt;SPAN&gt;Set&lt;/SPAN&gt; AcadObj = GetObject&lt;SPAN&gt;(&lt;/SPAN&gt;, &lt;SPAN&gt;"AutoCAD.Application"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
        &lt;SPAN&gt;If&lt;/SPAN&gt; Err.Number &amp;lt;&amp;gt; &lt;SPAN&gt;0&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
            &lt;SPAN&gt;Set&lt;/SPAN&gt; AcadObj = CreateObject&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;"AutoCAD.Application"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
            NombreDessinAutocad = &lt;SPAN&gt;-1&lt;/SPAN&gt;
        &lt;SPAN&gt;Else&lt;/SPAN&gt;
            acadDoc.Close
        &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
&amp;nbsp;       &lt;BR /&gt;        &lt;FONT color="#0000FF"&gt;'' You run your code from Excel, it should have been already visible&lt;/FONT&gt;
        &lt;STRONG&gt;&lt;FONT color="#FF0000"&gt;Excel.Application.Visible = True&lt;/FONT&gt;&lt;/STRONG&gt;
&amp;nbsp;
    Fichier = Application.GetOpenFilename&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;"Autocad files (*.dwg), *.dwg"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
&amp;nbsp;
    &lt;SPAN&gt;If&lt;/SPAN&gt; Fichier &amp;lt;&amp;gt; &lt;SPAN&gt;""&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
&amp;nbsp;
        AcadObj.Visible = &lt;SPAN&gt;True&lt;/SPAN&gt;
        &lt;SPAN&gt;'maximiser la fenêtre autocad&lt;/SPAN&gt;
        AcadObj.WindowState = &lt;SPAN&gt;3&lt;/SPAN&gt;
&amp;nbsp;
        &lt;SPAN&gt;Set&lt;/SPAN&gt; acadDoc = AcadObj.Documents.Open&lt;SPAN&gt;(&lt;/SPAN&gt;Fichier&lt;SPAN&gt;)&lt;/SPAN&gt;
&amp;nbsp;
    &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
&amp;nbsp;
    &lt;SPAN&gt;' selection des éléments du dessin&lt;/SPAN&gt;
&amp;nbsp;&lt;BR /&gt;    &lt;FONT color="#0000FF"&gt;'' Since your code just open the drawing, there is no existing SelectionSet fpr sure&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#0000FF"&gt;    '' No need to test if there is one&lt;/FONT&gt;
    &lt;STRONG&gt;&lt;FONT color="#FF0000"&gt;If acadDoc.SelectionSets.Count &amp;lt; 1 Then
        Set sset = acadDoc.SelectionSets.Add("jeu")
    Else
        Set sset = acadDoc.SelectionSets.Item(0)
    End If&lt;BR /&gt;&lt;/FONT&gt;&lt;BR /&gt;    &lt;/STRONG&gt;&lt;FONT color="#0000FF"&gt;'' The code creates a SelectionSet, and never selects anything&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#0000FF"&gt;&lt;STRONG&gt;    ''&lt;/STRONG&gt; So, why create a SelectionSet?&lt;/FONT&gt;
&lt;STRONG&gt;    &lt;FONT color="#FF0000"&gt;If sset.Count &amp;lt; 1 Then                    ' si la zone de sélection  contient des objets&lt;BR /&gt;       &lt;/FONT&gt;&lt;/STRONG&gt; &lt;FONT color="#0000FF"&gt;'' What toto is? It cannot be either AcadModelSpace, or AcadSelectionSet&lt;BR /&gt;        '' unless it is decleared as "Object"
&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT color="#FF0000"&gt;        Set toto = acadDoc.ModelSpace
    Else                                                               ' sinon prend tout le dessin
        Set toto = sset
    End If&lt;/FONT&gt;&lt;/STRONG&gt;
&amp;nbsp;
    &lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; AcadObj &lt;SPAN&gt;In&lt;/SPAN&gt; toto
&amp;nbsp;
&amp;nbsp;
        &lt;SPAN&gt;With&lt;/SPAN&gt; AcadObj
        &lt;SPAN&gt;If&lt;/SPAN&gt; .EntityName = &lt;SPAN&gt;"AcDbBlockReference"&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
                &lt;SPAN&gt;Set&lt;/SPAN&gt; BLOK = AcadObj
                    kk = &lt;SPAN&gt;1&lt;/SPAN&gt;
            &lt;SPAN&gt;Else&lt;/SPAN&gt;
                &lt;SPAN&gt;If&lt;/SPAN&gt; .EntityName = &lt;SPAN&gt;"AcDbPolyline"&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
                    &lt;SPAN&gt;Set&lt;/SPAN&gt; poly = AcadObj&lt;BR /&gt;                    &lt;FONT color="#0000FF"&gt;'' There line of code will not pass Compiling&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#0000FF"&gt;                    '' An AcadObject/AcadLWPoline DOES NOT have a method called "GetODRecords()"&lt;/FONT&gt;
                    &lt;FONT color="#FF0000"&gt;&lt;STRONG&gt;Set ORD = poly.GetODRecords&lt;/STRONG&gt;&lt;/FONT&gt;
&amp;nbsp;
                    kk = &lt;SPAN&gt;1&lt;/SPAN&gt;
                &lt;SPAN&gt;Else&lt;/SPAN&gt;
                    &lt;SPAN&gt;If&lt;/SPAN&gt; .EntityName = &lt;SPAN&gt;"AcDbLine"&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
                        &lt;SPAN&gt;Set&lt;/SPAN&gt; ligne = AcadObj
                        kk = &lt;SPAN&gt;1&lt;/SPAN&gt;
                    &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
                &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
            &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
        &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;With&lt;/SPAN&gt;
   &lt;SPAN&gt;Next&lt;/SPAN&gt;
&amp;nbsp;
&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Sub&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In order to access Objec Data, you need to set reference to AcMapVbApi.tlb, then you need to instantiate an AcadMap object, and then use ODTables or ODTable object to retrieve object data attached to AcadEntity.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You probably need to learn moreon how to use AcadMap COM API.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Also, if you run your code from Excel VBA and your drawing has a lots of polyline having object data attached, the code execution might be very slow. In this case, it woul dbe better to do the object data retrieving work from AutoCAD VBA side and save retrieved data back to Excel sheet.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;</description>
    <pubDate>Mon, 02 Oct 2017 13:45:36 GMT</pubDate>
    <dc:creator>Norman_Yuan</dc:creator>
    <dc:date>2017-10-02T13:45:36Z</dc:date>
    <item>
      <title>EXCEL VBA pour extraire les données des objets d'un dessin de AUTOCADMAP</title>
      <link>https://forums.autodesk.com/t5/autocad-map-3d-developer-forum/excel-vba-pour-extraire-les-donnees-des-objets-d-un-dessin-de/m-p/7420746#M801</link>
      <description>&lt;P&gt;&amp;nbsp;Bonjour,&lt;BR /&gt;je pilote AUTOCAD MAP depuis EXCEL, je sais déjà faire plein de manipulation, mais je n'arrive pas à récupérer les données objets des polylignes de mon dessin, pour les mettre dans un onglet de EXCEL, voici le début de mon code, est-ce que quelqu'un pourrait m'aider:&lt;BR /&gt;&lt;BR /&gt;Merci pour votre aide&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;SPAN&gt;Sub&lt;/SPAN&gt; INFO&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
&amp;nbsp;
&lt;SPAN&gt;Dim&lt;/SPAN&gt; ORD &lt;SPAN&gt;As&lt;/SPAN&gt; ODRecord
&lt;SPAN&gt;Dim&lt;/SPAN&gt; BlocRef &lt;SPAN&gt;As&lt;/SPAN&gt; AcadBlockReference
&lt;SPAN&gt;Dim&lt;/SPAN&gt; poly &lt;SPAN&gt;As&lt;/SPAN&gt; AcadLWPolyline
&lt;SPAN&gt;Dim&lt;/SPAN&gt; ligne &lt;SPAN&gt;As&lt;/SPAN&gt; AcadLine
&amp;nbsp;
&lt;SPAN&gt;On&lt;/SPAN&gt; &lt;SPAN&gt;Error&lt;/SPAN&gt; &lt;SPAN&gt;Resume&lt;/SPAN&gt; &lt;SPAN&gt;Next&lt;/SPAN&gt;
&amp;nbsp;
&amp;nbsp;
        &lt;SPAN&gt;Set&lt;/SPAN&gt; AcadObj = GetObject&lt;SPAN&gt;(&lt;/SPAN&gt;, &lt;SPAN&gt;"AutoCAD.Application"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
        &lt;SPAN&gt;If&lt;/SPAN&gt; Err.Number &amp;lt;&amp;gt; &lt;SPAN&gt;0&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
            &lt;SPAN&gt;Set&lt;/SPAN&gt; AcadObj = CreateObject&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;"AutoCAD.Application"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
            NombreDessinAutocad = &lt;SPAN&gt;-1&lt;/SPAN&gt;
        &lt;SPAN&gt;Else&lt;/SPAN&gt;
            acadDoc.Close
        &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
&amp;nbsp;
        Excel.Application.Visible = &lt;SPAN&gt;True&lt;/SPAN&gt;
&amp;nbsp;
    Fichier = Application.GetOpenFilename&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;"Autocad files (*.dwg), *.dwg"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
&amp;nbsp;
    &lt;SPAN&gt;If&lt;/SPAN&gt; Fichier &amp;lt;&amp;gt; &lt;SPAN&gt;""&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
&amp;nbsp;
        AcadObj.Visible = &lt;SPAN&gt;True&lt;/SPAN&gt;
        &lt;SPAN&gt;'maximiser la fenêtre autocad&lt;/SPAN&gt;
        AcadObj.WindowState = &lt;SPAN&gt;3&lt;/SPAN&gt;
&amp;nbsp;
        &lt;SPAN&gt;Set&lt;/SPAN&gt; acadDoc = AcadObj.Documents.Open&lt;SPAN&gt;(&lt;/SPAN&gt;Fichier&lt;SPAN&gt;)&lt;/SPAN&gt;
&amp;nbsp;
    &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
&amp;nbsp;
    &lt;SPAN&gt;' selection des éléments du dessin&lt;/SPAN&gt;
&amp;nbsp;
    &lt;SPAN&gt;If&lt;/SPAN&gt; acadDoc.SelectionSets.Count &amp;lt; &lt;SPAN&gt;1&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
        &lt;SPAN&gt;Set&lt;/SPAN&gt; sset = acadDoc.SelectionSets.Add&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;"jeu"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
    &lt;SPAN&gt;Else&lt;/SPAN&gt;
        &lt;SPAN&gt;Set&lt;/SPAN&gt; sset = acadDoc.SelectionSets.Item&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
    &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
    &lt;SPAN&gt;If&lt;/SPAN&gt; sset.Count &amp;lt; &lt;SPAN&gt;1&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;                    &lt;SPAN&gt;' si la zone de sélection  contient des objets&lt;/SPAN&gt;
        &lt;SPAN&gt;Set&lt;/SPAN&gt; toto = acadDoc.ModelSpace
    &lt;SPAN&gt;Else&lt;/SPAN&gt;                                                               &lt;SPAN&gt;' sinon prend tout le dessin&lt;/SPAN&gt;
        &lt;SPAN&gt;Set&lt;/SPAN&gt; toto = sset
    &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
&amp;nbsp;
    &lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; AcadObj &lt;SPAN&gt;In&lt;/SPAN&gt; toto
&amp;nbsp;
&amp;nbsp;
        &lt;SPAN&gt;With&lt;/SPAN&gt; AcadObj
        &lt;SPAN&gt;If&lt;/SPAN&gt; .EntityName = &lt;SPAN&gt;"AcDbBlockReference"&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
                &lt;SPAN&gt;Set&lt;/SPAN&gt; BLOK = AcadObj
                    kk = &lt;SPAN&gt;1&lt;/SPAN&gt;
            &lt;SPAN&gt;Else&lt;/SPAN&gt;
                &lt;SPAN&gt;If&lt;/SPAN&gt; .EntityName = &lt;SPAN&gt;"AcDbPolyline"&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
                    &lt;SPAN&gt;Set&lt;/SPAN&gt; poly = AcadObj
                    &lt;SPAN&gt;Set&lt;/SPAN&gt; ORD = poly.GetODRecords
&amp;nbsp;
                    kk = &lt;SPAN&gt;1&lt;/SPAN&gt;
                &lt;SPAN&gt;Else&lt;/SPAN&gt;
                    &lt;SPAN&gt;If&lt;/SPAN&gt; .EntityName = &lt;SPAN&gt;"AcDbLine"&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
                        &lt;SPAN&gt;Set&lt;/SPAN&gt; ligne = AcadObj
                        kk = &lt;SPAN&gt;1&lt;/SPAN&gt;
                    &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
                &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
            &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
        &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;With&lt;/SPAN&gt;
   &lt;SPAN&gt;Next&lt;/SPAN&gt;
&amp;nbsp;
&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Sub&lt;/SPAN&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 29 Sep 2017 15:59:16 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/autocad-map-3d-developer-forum/excel-vba-pour-extraire-les-donnees-des-objets-d-un-dessin-de/m-p/7420746#M801</guid>
      <dc:creator>SEPPT</dc:creator>
      <dc:date>2017-09-29T15:59:16Z</dc:date>
    </item>
    <item>
      <title>Re: EXCEL VBA pour extraire les données des objets d'un dessin de AUTOCADMAP</title>
      <link>https://forums.autodesk.com/t5/autocad-map-3d-developer-forum/excel-vba-pour-extraire-les-donnees-des-objets-d-un-dessin-de/m-p/7425328#M802</link>
      <description>&lt;P&gt;I do not know French and use Google translate to see your question.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;When you ask help, you'd better describe what issue you have run into with your code. Does it run at all, or it brings error at some point?&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I'd guess the code is not runable, or at least it would not run through. As matter of fact, if you click menu in VBA editor (Excel's VBA) "Debug-&amp;gt;Compile VBA Project...", you likely get error.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Here are somethings regarding your code, see my comments in your code (in blue)&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/808136"&gt;@SEPPT&lt;/a&gt; wrote:&lt;BR /&gt;
&lt;P&gt;...&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;SPAN&gt;Sub&lt;/SPAN&gt; INFO&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
&amp;nbsp;
&lt;SPAN&gt;Dim&lt;/SPAN&gt; ORD &lt;SPAN&gt;As&lt;/SPAN&gt; ODRecord
&lt;SPAN&gt;Dim&lt;/SPAN&gt; BlocRef &lt;SPAN&gt;As&lt;/SPAN&gt; AcadBlockReference
&lt;SPAN&gt;Dim&lt;/SPAN&gt; poly &lt;SPAN&gt;As&lt;/SPAN&gt; AcadLWPolyline
&lt;SPAN&gt;Dim&lt;/SPAN&gt; ligne &lt;SPAN&gt;As&lt;/SPAN&gt; AcadLine
&amp;nbsp;
&lt;SPAN&gt;On&lt;/SPAN&gt; &lt;SPAN&gt;Error&lt;/SPAN&gt; &lt;SPAN&gt;Resume&lt;/SPAN&gt; &lt;SPAN&gt;Next&lt;/SPAN&gt;
&amp;nbsp;
&amp;nbsp;
        &lt;SPAN&gt;Set&lt;/SPAN&gt; AcadObj = GetObject&lt;SPAN&gt;(&lt;/SPAN&gt;, &lt;SPAN&gt;"AutoCAD.Application"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
        &lt;SPAN&gt;If&lt;/SPAN&gt; Err.Number &amp;lt;&amp;gt; &lt;SPAN&gt;0&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
            &lt;SPAN&gt;Set&lt;/SPAN&gt; AcadObj = CreateObject&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;"AutoCAD.Application"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
            NombreDessinAutocad = &lt;SPAN&gt;-1&lt;/SPAN&gt;
        &lt;SPAN&gt;Else&lt;/SPAN&gt;
            acadDoc.Close
        &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
&amp;nbsp;       &lt;BR /&gt;        &lt;FONT color="#0000FF"&gt;'' You run your code from Excel, it should have been already visible&lt;/FONT&gt;
        &lt;STRONG&gt;&lt;FONT color="#FF0000"&gt;Excel.Application.Visible = True&lt;/FONT&gt;&lt;/STRONG&gt;
&amp;nbsp;
    Fichier = Application.GetOpenFilename&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;"Autocad files (*.dwg), *.dwg"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
&amp;nbsp;
    &lt;SPAN&gt;If&lt;/SPAN&gt; Fichier &amp;lt;&amp;gt; &lt;SPAN&gt;""&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
&amp;nbsp;
        AcadObj.Visible = &lt;SPAN&gt;True&lt;/SPAN&gt;
        &lt;SPAN&gt;'maximiser la fenêtre autocad&lt;/SPAN&gt;
        AcadObj.WindowState = &lt;SPAN&gt;3&lt;/SPAN&gt;
&amp;nbsp;
        &lt;SPAN&gt;Set&lt;/SPAN&gt; acadDoc = AcadObj.Documents.Open&lt;SPAN&gt;(&lt;/SPAN&gt;Fichier&lt;SPAN&gt;)&lt;/SPAN&gt;
&amp;nbsp;
    &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
&amp;nbsp;
    &lt;SPAN&gt;' selection des éléments du dessin&lt;/SPAN&gt;
&amp;nbsp;&lt;BR /&gt;    &lt;FONT color="#0000FF"&gt;'' Since your code just open the drawing, there is no existing SelectionSet fpr sure&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#0000FF"&gt;    '' No need to test if there is one&lt;/FONT&gt;
    &lt;STRONG&gt;&lt;FONT color="#FF0000"&gt;If acadDoc.SelectionSets.Count &amp;lt; 1 Then
        Set sset = acadDoc.SelectionSets.Add("jeu")
    Else
        Set sset = acadDoc.SelectionSets.Item(0)
    End If&lt;BR /&gt;&lt;/FONT&gt;&lt;BR /&gt;    &lt;/STRONG&gt;&lt;FONT color="#0000FF"&gt;'' The code creates a SelectionSet, and never selects anything&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#0000FF"&gt;&lt;STRONG&gt;    ''&lt;/STRONG&gt; So, why create a SelectionSet?&lt;/FONT&gt;
&lt;STRONG&gt;    &lt;FONT color="#FF0000"&gt;If sset.Count &amp;lt; 1 Then                    ' si la zone de sélection  contient des objets&lt;BR /&gt;       &lt;/FONT&gt;&lt;/STRONG&gt; &lt;FONT color="#0000FF"&gt;'' What toto is? It cannot be either AcadModelSpace, or AcadSelectionSet&lt;BR /&gt;        '' unless it is decleared as "Object"
&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT color="#FF0000"&gt;        Set toto = acadDoc.ModelSpace
    Else                                                               ' sinon prend tout le dessin
        Set toto = sset
    End If&lt;/FONT&gt;&lt;/STRONG&gt;
&amp;nbsp;
    &lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; AcadObj &lt;SPAN&gt;In&lt;/SPAN&gt; toto
&amp;nbsp;
&amp;nbsp;
        &lt;SPAN&gt;With&lt;/SPAN&gt; AcadObj
        &lt;SPAN&gt;If&lt;/SPAN&gt; .EntityName = &lt;SPAN&gt;"AcDbBlockReference"&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
                &lt;SPAN&gt;Set&lt;/SPAN&gt; BLOK = AcadObj
                    kk = &lt;SPAN&gt;1&lt;/SPAN&gt;
            &lt;SPAN&gt;Else&lt;/SPAN&gt;
                &lt;SPAN&gt;If&lt;/SPAN&gt; .EntityName = &lt;SPAN&gt;"AcDbPolyline"&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
                    &lt;SPAN&gt;Set&lt;/SPAN&gt; poly = AcadObj&lt;BR /&gt;                    &lt;FONT color="#0000FF"&gt;'' There line of code will not pass Compiling&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#0000FF"&gt;                    '' An AcadObject/AcadLWPoline DOES NOT have a method called "GetODRecords()"&lt;/FONT&gt;
                    &lt;FONT color="#FF0000"&gt;&lt;STRONG&gt;Set ORD = poly.GetODRecords&lt;/STRONG&gt;&lt;/FONT&gt;
&amp;nbsp;
                    kk = &lt;SPAN&gt;1&lt;/SPAN&gt;
                &lt;SPAN&gt;Else&lt;/SPAN&gt;
                    &lt;SPAN&gt;If&lt;/SPAN&gt; .EntityName = &lt;SPAN&gt;"AcDbLine"&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
                        &lt;SPAN&gt;Set&lt;/SPAN&gt; ligne = AcadObj
                        kk = &lt;SPAN&gt;1&lt;/SPAN&gt;
                    &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
                &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
            &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
        &lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;With&lt;/SPAN&gt;
   &lt;SPAN&gt;Next&lt;/SPAN&gt;
&amp;nbsp;
&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Sub&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In order to access Objec Data, you need to set reference to AcMapVbApi.tlb, then you need to instantiate an AcadMap object, and then use ODTables or ODTable object to retrieve object data attached to AcadEntity.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You probably need to learn moreon how to use AcadMap COM API.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Also, if you run your code from Excel VBA and your drawing has a lots of polyline having object data attached, the code execution might be very slow. In this case, it woul dbe better to do the object data retrieving work from AutoCAD VBA side and save retrieved data back to Excel sheet.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;</description>
      <pubDate>Mon, 02 Oct 2017 13:45:36 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/autocad-map-3d-developer-forum/excel-vba-pour-extraire-les-donnees-des-objets-d-un-dessin-de/m-p/7425328#M802</guid>
      <dc:creator>Norman_Yuan</dc:creator>
      <dc:date>2017-10-02T13:45:36Z</dc:date>
    </item>
    <item>
      <title>Re: EXCEL VBA pour extraire les données des objets d'un dessin de AUTOCADMAP</title>
      <link>https://forums.autodesk.com/t5/autocad-map-3d-developer-forum/excel-vba-pour-extraire-les-donnees-des-objets-d-un-dessin-de/m-p/7434673#M803</link>
      <description>&lt;P&gt;So, i don't understand everything that you mean... but thank you to answered me.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;My pb is to select all entity and for each have the Object data attached to this acadentity and after printing&amp;nbsp; in a excel sheet....&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 05 Oct 2017 11:45:58 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/autocad-map-3d-developer-forum/excel-vba-pour-extraire-les-donnees-des-objets-d-un-dessin-de/m-p/7434673#M803</guid>
      <dc:creator>SEPPT</dc:creator>
      <dc:date>2017-10-05T11:45:58Z</dc:date>
    </item>
  </channel>
</rss>

