Тема: Как перенести данные из таблицы ATable в Excel

Нужно перенести данные из таблицы ATable в Excel. Если можно помогите пожалуйста с кодом.

Re: Как перенести данные из таблицы ATable в Excel

> Znich007
Примерно так, только файл Эксель форматируй вручную
перед закрытием или займись этим позже -
без разницы
В меню Tools -> Options -> General
в поле Error Trapping включи радио-кнопку:
"Break on Unhandled Errors" а также не забудь
в References добавить ссылку на библиотеку
Эксель

Option Explicit
Sub TableToExcel()
Dim rCnt As Long
Dim iNdx As Long
Dim lngRow As Long
Dim lngCol As Long
Dim oent As AcadEntity
Dim tbl As AcadTable
Dim pt As Variant
Dim row As Long
Dim col As Long
Dim collTxt As New Collection
Set collTxt = New Collection
ThisDrawing.Utility.GetEntity oent, pt, vbCrLf & "Select table:"
If TypeOf oent Is AcadTable Then
Set tbl = oent
End If
With tbl
For row = 0 To .Rows - 1
ReDim tmp(0 To .Columns - 1)
For col = 0 To .Columns - 1
tmp(col) = .GetText(row, col)
Next col
collTxt.Add tmp
Next
End With
     '===================== excel part follows here============'
     Dim xlApp As Excel.Application
     Dim xlBook As Workbook
     Dim xlSheet As Worksheet
     Dim strFilePath As String
     On Error Resume Next
     Err.Clear
     Set xlApp = GetObject(, "Excel.Application")
     If Err <> 0 Then
          Err.Clear
          Set xlApp = CreateObject("Excel.Application")
          If Err <> 0 Then
               MsgBox "Cannot start Excel", vbExclamation
               End
          End If
     End If
     On Error GoTo 0
     xlApp.Visible = True
     Set xlBook = xlApp.Workbooks.Add
     Set xlSheet = xlBook.Worksheets(1)
     On Error GoTo Err_control
     rCnt = UBound(collTxt.Item(1))
     iNdx = 1
     With xlSheet
          .Range("A:A").NumberFormat = "@"
          For lngRow = 1 To collTxt.Count
               For lngCol = 1 To rCnt + 1
                    .Cells(lngRow, lngCol) = collTxt.Item(lngRow)(lngCol - 1)
                    iNdx = iNdx + 1
               Next
          Next
     End With
strFilePath = ThisDrawing.Path & "\ExportTable.xls"
xlBook.SaveAs strFilePath
MsgBox "Format cells manually" & vbCr & "then close Excel"
Err_control:
If Err.Number <> 0 Then
     MsgBox Err.Description
End If
End Sub

~'J'~

Re: Как перенести данные из таблицы ATable в Excel

> Fatty
Внимание: ATable

Re: Как перенести данные из таблицы ATable в Excel

> Александр Ривилис
Я так понял: AcadTable, а если имеется ввиду
прога с таким названием - тогда я пас
~'J'~

Re: Как перенести данные из таблицы ATable в Excel

Помог atableX2G (plug-in к ATable), разобрался как читать и записывать в ячейки и многое другое, но возник вопрос: как получить объект существующей таблицы ATable, при этом она находится не на модели, а на layout.
В принципе можно перенести таблицу и на модель, если надо будет.

Re: Как перенести данные из таблицы ATable в Excel

Достаточно качнуть новую версию ATable дял AutoCAD 2007-2009, она сейчас бесплатная и бета, установить, открыть таблицу и через буфер обмена перенести данные в Excel.

Re: Как перенести данные из таблицы ATable в Excel

> Alxd
Огромнейшее спасибо за новую версию Atable. Но есть несколько замечаний:
1. Не работает конвертация таблиц из версии 6.Х.
При подгрузке лиспа появляется новый пункт в меню, таблица через контекстное меню выбирается, но ничего не происходит. Для правки старых таблиц приходится использовать 2005 акад со старой версией Atable.
2. Плагин atableX2G от старой версии не работает (что, в принципе, не удивительно). Будет ли этот плагин для новой версии? Уж очень он удобный.

Re: Как перенести данные из таблицы ATable в Excel

> [Re:] Alxd
Скажите пожалуйста, каким образом можно программно c помощью VB скопировать данные из таблицы в буфер обмена, а затем вставить в excel? Может у Вас есть пример кода?

Re: Как перенести данные из таблицы ATable в Excel

2 Loner Wanderer
Вместо atableX2G планирую написать иной способ связи с Excel. Осталось только собраться с мыслями. ;)