<?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: Coming from VBA and new to VB.NET - Connect to Excel in .NET Forum</title>
    <link>https://forums.autodesk.com/t5/net-forum/coming-from-vba-and-new-to-vb-net-connect-to-excel/m-p/3032216#M60849</link>
    <description>&lt;PRE&gt;    &amp;lt;CommandMethod("LAY2XLS")&amp;gt; _
    Public Sub Proj1()

        Dim db As Database

        Dim bt As BlockTable

        Dim ms As BlockTableRecord

        Dim myDWG As Document

        Dim layersList As List(Of String)

        myDWG = Application.DocumentManager.MdiActiveDocument

        Dim ed As Editor = myDWG.Editor

        layersList = New List(Of String)(New String() {})

        Dim oldCult = CultureInfo.CurrentCulture()
        '' This line is very important!
        Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-US") '&amp;lt;-- change culture on whatever you need

        Try

            Using trans As Transaction = myDWG.TransactionManager.StartTransaction()

                db = Application.DocumentManager.MdiActiveDocument.Database

                bt = trans.GetObject(db.BlockTableId, OpenMode.ForRead)

                ms = trans.GetObject(bt(BlockTableRecord.ModelSpace), OpenMode.ForRead)


                Dim layerTB As LayerTable

                layerTB = trans.GetObject(db.LayerTableId, OpenMode.ForRead)

                For Each objecto As ObjectId In layerTB

                    Dim MyLayer As LayerTableRecord

                    MyLayer = DirectCast(trans.GetObject(objecto, OpenMode.ForRead), LayerTableRecord)

                    layersList.Add(MyLayer.Name)

                Next

            End Using

           

            Dim objExcel As Microsoft.Office.Interop.Excel.Application

            Dim folhaExcel As Microsoft.Office.Interop.Excel.Worksheet

            objExcel = CreateObject("Excel.Application")

            objExcel.Visible = True

            objExcel.Workbooks.Add()

            folhaExcel = objExcel.ActiveSheet

            folhaExcel.Name = "Layers"

            Dim contador As Integer = 1

            For Each layrName As String In layersList

                folhaExcel.Cells(contador, 1).value = layrName

                contador = contador + 1

            Next

        Catch ex As System.Exception

            MsgBox(ex.Message &amp;amp; ex.StackTrace)
            If ex.InnerException IsNot Nothing Then
                MsgBox("Inner excepyion: " &amp;amp; vbLf &amp;amp; ex.InnerException.Message)
            End If
        Finally         
            Thread.CurrentThread.CurrentCulture = oldCult
        End Try
    End Sub&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Try again&lt;/P&gt;</description>
    <pubDate>Sat, 21 May 2011 17:12:56 GMT</pubDate>
    <dc:creator>Hallex</dc:creator>
    <dc:date>2011-05-21T17:12:56Z</dc:date>
    <item>
      <title>Coming from VBA and new to VB.NET - Connect to Excel</title>
      <link>https://forums.autodesk.com/t5/net-forum/coming-from-vba-and-new-to-vb-net-connect-to-excel/m-p/3030074#M60847</link>
      <description>&lt;P&gt;Hi&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I searched this group but didn't find the answer for this problem.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I want to export the layers names to Excel, as I used in VBA. I'm using AutoCAD 2011 (64b), VB Express 2010, Office 2003 (32b). I ran this routine in XP 64b and W7 64 with the same problem.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;No problem in building the DLL, or loading it to AutoCAD. When running the command, Excel opens, but no workbook is created and I get this Unhandled exception error:&lt;/P&gt;&lt;P&gt;System.Runtime.InteropServices.COMException (0x80028018): Old format or invalid type library. (Exception from HRESULT: 0x80028018 (TYPE_E_INVDATAREAD))&lt;BR /&gt;&amp;nbsp;&amp;nbsp; at Microsoft.Office.Interop.Excel.Workbooks.Add(Object Template)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; at Ligacao_Excel.Class1.Proj1() in d:\documents and settings\joão santos\visual studio 2010\Projects\Ligacao-Excel\Ligacao-Excel\Class1.vb:line 22&lt;/P&gt;&lt;P&gt;Line 22 is : folhaExcel = objExcel.ActiveSheet&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Any help will be mostly appreciated. To program in VBA was much easier, but I recognize the .NET power, as soon as this can be dominated &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;João Santos&lt;/P&gt;&lt;P&gt;Portugal&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Imports Autodesk.AutoCAD.ApplicationServices&lt;/P&gt;&lt;P&gt;Imports Autodesk.AutoCAD.DatabaseServices&lt;/P&gt;&lt;P&gt;Imports Autodesk.AutoCAD.EditorInput&lt;/P&gt;&lt;P&gt;Imports Autodesk.AutoCAD.Runtime&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Public Class Class1&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;CommandMethod("LAY2XLS")&amp;gt; _&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Public Sub Proj1()&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim db As Database&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim bt As BlockTable&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim ms As BlockTableRecord&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim myDWG As Document&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; myDWG = Application.DocumentManager.MdiActiveDocument&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim ed As Editor = myDWG.Editor&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim objExcel As Microsoft.Office.Interop.Excel.Application&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim folhaExcel As Microsoft.Office.Interop.Excel.Worksheet&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; objExcel = CreateObject("Excel.Application")&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; objExcel.Visible = True&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; objExcel.Workbooks.Add()&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; folhaExcel = objExcel.ActiveSheet&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Using trans As Transaction = myDWG.TransactionManager.StartTransaction()&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; db = Application.DocumentManager.MdiActiveDocument.Database&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;bt = trans.GetObject(db.BlockTableId, OpenMode.ForRead)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ms = trans.GetObject(bt(BlockTableRecord.ModelSpace), OpenMode.ForWrite)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim layerTB As LayerTable&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; layerTB = trans.GetObject(db.LayerTableId, OpenMode.ForRead)&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Dim contador As Integer = 1&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; For Each objecto As ObjectId In layerTB&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim MyLayer As LayerTableRecord&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MyLayer = trans.GetObject(objecto, OpenMode.ForRead)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; folhaExcel.Cells(contador, 1).value = MyLayer.Name&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; contador = contador + 1&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Next&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Using&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Sub&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;End Class&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 19 May 2011 16:52:22 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/net-forum/coming-from-vba-and-new-to-vb-net-connect-to-excel/m-p/3030074#M60847</guid>
      <dc:creator>joaosantos</dc:creator>
      <dc:date>2011-05-19T16:52:22Z</dc:date>
    </item>
    <item>
      <title>Re: Coming from VBA and new to VB.NET - Connect to Excel</title>
      <link>https://forums.autodesk.com/t5/net-forum/coming-from-vba-and-new-to-vb-net-connect-to-excel/m-p/3030202#M60848</link>
      <description>&lt;P&gt;The 32bit Office &amp;amp; 64bit AutoCAD combination can cause problems with COM.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;If your Excel files are in xlxs format you can totally skip using COM and requiring Excel to be installed on the machine by using the OpenXML.SDK from Microsoft. It allows you to read/write Excel and Word files independent on if the app is on the machine.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here's the link to the Microsoft info: &lt;A target="_blank" href="http://msdn.microsoft.com/en-us/library/bb448854.aspx" rel="nofollow"&gt;http://msdn.microsoft.com/en-us/library/bb448854.aspx&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 19 May 2011 17:48:08 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/net-forum/coming-from-vba-and-new-to-vb-net-connect-to-excel/m-p/3030202#M60848</guid>
      <dc:creator>michael_robertson</dc:creator>
      <dc:date>2011-05-19T17:48:08Z</dc:date>
    </item>
    <item>
      <title>Re: Coming from VBA and new to VB.NET - Connect to Excel</title>
      <link>https://forums.autodesk.com/t5/net-forum/coming-from-vba-and-new-to-vb-net-connect-to-excel/m-p/3032216#M60849</link>
      <description>&lt;PRE&gt;    &amp;lt;CommandMethod("LAY2XLS")&amp;gt; _
    Public Sub Proj1()

        Dim db As Database

        Dim bt As BlockTable

        Dim ms As BlockTableRecord

        Dim myDWG As Document

        Dim layersList As List(Of String)

        myDWG = Application.DocumentManager.MdiActiveDocument

        Dim ed As Editor = myDWG.Editor

        layersList = New List(Of String)(New String() {})

        Dim oldCult = CultureInfo.CurrentCulture()
        '' This line is very important!
        Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-US") '&amp;lt;-- change culture on whatever you need

        Try

            Using trans As Transaction = myDWG.TransactionManager.StartTransaction()

                db = Application.DocumentManager.MdiActiveDocument.Database

                bt = trans.GetObject(db.BlockTableId, OpenMode.ForRead)

                ms = trans.GetObject(bt(BlockTableRecord.ModelSpace), OpenMode.ForRead)


                Dim layerTB As LayerTable

                layerTB = trans.GetObject(db.LayerTableId, OpenMode.ForRead)

                For Each objecto As ObjectId In layerTB

                    Dim MyLayer As LayerTableRecord

                    MyLayer = DirectCast(trans.GetObject(objecto, OpenMode.ForRead), LayerTableRecord)

                    layersList.Add(MyLayer.Name)

                Next

            End Using

           

            Dim objExcel As Microsoft.Office.Interop.Excel.Application

            Dim folhaExcel As Microsoft.Office.Interop.Excel.Worksheet

            objExcel = CreateObject("Excel.Application")

            objExcel.Visible = True

            objExcel.Workbooks.Add()

            folhaExcel = objExcel.ActiveSheet

            folhaExcel.Name = "Layers"

            Dim contador As Integer = 1

            For Each layrName As String In layersList

                folhaExcel.Cells(contador, 1).value = layrName

                contador = contador + 1

            Next

        Catch ex As System.Exception

            MsgBox(ex.Message &amp;amp; ex.StackTrace)
            If ex.InnerException IsNot Nothing Then
                MsgBox("Inner excepyion: " &amp;amp; vbLf &amp;amp; ex.InnerException.Message)
            End If
        Finally         
            Thread.CurrentThread.CurrentCulture = oldCult
        End Try
    End Sub&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Try again&lt;/P&gt;</description>
      <pubDate>Sat, 21 May 2011 17:12:56 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/net-forum/coming-from-vba-and-new-to-vb-net-connect-to-excel/m-p/3032216#M60849</guid>
      <dc:creator>Hallex</dc:creator>
      <dc:date>2011-05-21T17:12:56Z</dc:date>
    </item>
    <item>
      <title>Re: Coming from VBA and new to VB.NET - Connect to Excel</title>
      <link>https://forums.autodesk.com/t5/net-forum/coming-from-vba-and-new-to-vb-net-connect-to-excel/m-p/3033500#M60850</link>
      <description>&lt;P&gt;Thanks a lot Hallex. It worked perfectly. Now I will dig to understand this solution, never saw some of these instructions. Anyway I'm quite new to VB.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Also thanks to Michael for previous post. I went to the site but didn't had the time to search. But I will also study this clue.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Cheers&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;João Santos&lt;/P&gt;</description>
      <pubDate>Mon, 23 May 2011 22:21:50 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/net-forum/coming-from-vba-and-new-to-vb-net-connect-to-excel/m-p/3033500#M60850</guid>
      <dc:creator>joaosantos</dc:creator>
      <dc:date>2011-05-23T22:21:50Z</dc:date>
    </item>
  </channel>
</rss>

