Тема: Передача данных в Excel без технологии Active X

Правильно понимаю, что организовать передачу данных из CADa в Excel возможно организовать на VBA?

Re: Передача данных в Excel без технологии Active X

Да тут полно вариантов Fatty запостил про Excel неужели мало?

Re: Передача данных в Excel без технологии Active X

Дико сорри, че-то не нашел (может плохо искал :-Х
Может ссылкой кинете?

Re: Передача данных в Excel без технологии Active X

> Дмитрий
Посмотри здесь небольшой пример
экспорта координат полилиний
http://webfile.ru/1359377
название файла A2E.rar
Сначала открой файл Эксель, затем сверни его
Открой рисунок, командой vbaload в командной
строке подгрузи проект (разархивируй прежде)
затем командой vbarun запусти в работу
Файл Эксель нужно будет сохранить вручную
~'J'~

Re: Передача данных в Excel без технологии Active X

Просто допролнения, не знаю почему уважаемый Fatty любит запускать вначале Excel потом макрос. Решил чуток модифицировать код. Не меняя прежний функционал. Теперь макрос будет управлять запущенным макросом, если такого нет то запустит для себя Excel. По моему мнению лучше создавать новый объект и в него импортировать, а не отлавливать запущеный Excel, но всеравно каждый привык работать по своему.

Private Sub Command1_Click()
Dim objEnt As AcadEntity
Dim vertPt(2) As Double
Dim strText As String
Dim n As Integer
Dim oSset As AcadSelectionSet
Dim fType(0) As Integer
Dim fData(0) As Variant
Dim dxfCode As Variant
Dim dxfData As Variant
fType(0) = 0: fData(0) = "LWPOLYLINE"
dxfCode = fType
dxfData = fData
For Each oSset In ThisDrawing.SelectionSets
If oSset.Name = "$PolySet$" Then
oSset.Delete
Exit For
End If
Next
Set oSset = ThisDrawing.SelectionSets.Add("$PolySet$")
frm3DCoords.Hide
oSset.SelectOnScreen dxfCode, dxfData
Command2.SetFocus
frm3DCoords.Show
If oSset.Count Then
Dim xlApp As excel.Application
On Error Resume Next
 Set xlApp = GetObject(, "Excel.Application")
  If Err = 429 Then
   Set xlApp = New excel.Application
   xlApp.Visible = True
   xlApp.SheetsInNewWorkbook = 1
   xlApp.Workbooks.Add
  End If
Dim cellvar As Double
Dim i As Integer
Dim j As Integer
Dim temp As Variant
Dim k As Integer
Dim vert As Variant
j = 2
For Each objEnt In oSset
If TypeOf objEnt Is AcadLWPolyline Then
n = 2
ElseIf TypeOf objEnt Is Acad3DPolyline Or TypeOf objEnt Is AcadPolyline Then
n = 3
Else
MsgBox "Wrong object"
End If
vert = objEnt.Coordinates
For i = LBound(vert) To UBound(vert) Step n
If TypeOf objEnt Is AcadLWPolyline Then
strText = CStr(vert(i))
xlApp.Cells(j, 1).Value = strText
strText = CStr(vert(i + 1))
xlApp.Cells(j, 2).Value = strText
ElseIf TypeOf objEnt Is Acad3DPolyline Or TypeOf objEnt Is AcadPolyline Then
strText = CStr(vert(i))
xlApp.Cells(j, 1).Value = strText
strText = CStr(vert(i + 1))
xlApp.Cells(j, 2).Value = strText
strText = CStr(vert(i + 2))
xlApp.Cells(j, 3).Value = strText
End If
j = j + 1
Next
j = j + 1
Next

все чего не хватает в этом коде ноходится выше в сообщении Fatty

Re: Передача данных в Excel без технологии Active X

Всем спасибо!
Еще один вопрос попутно
Будет ли все это работать под IntelliCAD и прочей подобной мутью?

Re: Передача данных в Excel без технологии Active X

Про IntelliCAD никто не в курсе что ли? :(

Re: Передача данных в Excel без технологии Active X

Ниче если еще раз напомню о своей скромной персоне? Ну я все о том же, о вопросе про IntelliCAD.

Re: Передача данных в Excel без технологии Active X

> Дмитрий
Извини, никогда в глаза не видел такого:)
~'J'~