Тема: Передача данных в Excel без технологии Active X
Правильно понимаю, что организовать передачу данных из CADa в Excel возможно организовать на VBA?
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → VBA → Передача данных в Excel без технологии Active X
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Правильно понимаю, что организовать передачу данных из CADa в Excel возможно организовать на VBA?
Да тут полно вариантов Fatty запостил про Excel неужели мало?
Дико сорри, че-то не нашел (может плохо искал :-Х
Может ссылкой кинете?
> Дмитрий
Посмотри здесь небольшой пример
экспорта координат полилиний
http://webfile.ru/1359377
название файла A2E.rar
Сначала открой файл Эксель, затем сверни его
Открой рисунок, командой vbaload в командной
строке подгрузи проект (разархивируй прежде)
затем командой vbarun запусти в работу
Файл Эксель нужно будет сохранить вручную
~'J'~
Просто допролнения, не знаю почему уважаемый 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
Всем спасибо!
Еще один вопрос попутно
Будет ли все это работать под IntelliCAD и прочей подобной мутью?
Про IntelliCAD никто не в курсе что ли? :(
Ниче если еще раз напомню о своей скромной персоне? Ну я все о том же, о вопросе про IntelliCAD.
> Дмитрий
Извини, никогда в глаза не видел такого:)
~'J'~
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → VBA → Передача данных в Excel без технологии Active X
Форум работает на PunBB, при поддержке Informer Technologies, Inc