Тема: Импорт данных из Excel в Acad.
Помогите!!! Скажите, есть ли какиенить примочки для конвертирования данных из Excel в Acad.
Надо, чтобы из Excelевской таблички автоматически формировался Лист общих данных в Acadе, желательно 2000-м!
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → VBA → Импорт данных из Excel в Acad.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Помогите!!! Скажите, есть ли какиенить примочки для конвертирования данных из Excel в Acad.
Надо, чтобы из Excelевской таблички автоматически формировался Лист общих данных в Acadе, желательно 2000-м!
Вы можете, пожалуй, попробовать просто перекинуть через буфер, но могут поехать шрифты.
Наверное, неполностью выразила задачу!
Мне надо чтобы при вводе данных в определенные поля в Excel, у меня автоматически заполнялись соответствующие поля на листе общих данных в Acade!!!
Этот процесс надо автоматизировать, а не чтобы вручную люди делали двойную работку!!!
Тебе в программирование VBA $)
PS: А иначе никак, чужой дядя не придет и не набьет их там.
Без программирования на VBA вряд ли обойдешься.
Я похожую задачу реализовал следующим образом:
1) программа из под Excel создает на основе моего AutoCad-шаблона файл с нужной таблицей. Строка таблицы - блок с атрибутами. просто в цикле добавляем блоки и заполняем атрибуты данными из excel-вской таблицы.
2) если данные в excel-таблице поменялись - программа из под AutoCad обновляет данные, ориентируясь на совпадение одного из атрибутов (он может быть невидимым) со значением из ячейки в excel-таблице.
т.о. надо написать два макроса - один в excel, другой - в AutoCad
Я делал подобную вепрограммулину. В Excel макрос не нужен.
После установки связи с Excel (GetObject) в ACAD становятся доступными все функции и данные Excel . В тексте программы ссылку на объект, точка, код VBA Excel.
Проблемма возникает в форматировании - строки Еxcel могут не помещатся в рамках ячеек чертежа общих данных.
Но если известен стиль ACAD эту проблемму можно решить.
С наиулучшими пожеланиями,
Вадим.
Пасиба преогромнейшее за помощь!
Двигаюсь в нужном направлении и задачка как будто сама собой решается благодаря ВАМ!!!
Такс, на всякий случай я кину макрос небольшой, которым пользуюсь постоянно... он основан на командах лиспа
Function PointXYZToAutocad(KoX, KoY, KoZ) PointXYZToAutocad = "(command " + """_POINT"" " + """" + CStr(KoX) + "," + CStr(KoY) + "," + CStr(KoZ) + """)" End Function
PS: только убедитесь что символ разделения целой и дробной части у Вас ".", а не стандартная ",". Просто в этом случает Автокад Вас не поймет, для него "," это разделение между координатами. Успехов.
Блин, забыл сказать что для нанесения точки в автокад достаточно скопировать результат в буффер и вставить в коммандной строке автокада.
PS: такого типа код применим к рисованию любых объектов!
Такс, на всякий случай я кину макрос небольшой, которым пользуюсь постоянно... он основан на командах лиспаКод Function PointXYZToAutocad(KoX, KoY, KoZ)PointXYZToAutocad = "(command " + """_POINT"" " + """" + CStr(KoX) + "," + CStr(KoY) + "," + CStr(KoZ) + """)"End Function PS: только убедитесь что символ разделения целой и дробной части у Вас ".", а не стандартная ",". Просто в этом случает Автокад Вас не поймет, для него "," это разделение между координатами. Успехов.
Подскажите тупому, а как его использовать, запустить?
Цитата
Nesmit пишет:
Такс, на всякий случай я кину макрос небольшой, которым пользуюсь постоянно... он основан на командах лиспаКод Function PointXYZToAutocad(KoX, KoY, KoZ)PointXYZToAutocad = "(command " + """_POINT"" " + """" + CStr(KoX) + "," + CStr(KoY) + "," + CStr(KoZ) + """)"End Function PS: только убедитесь что символ разделения целой и дробной части у Вас ".", а не стандартная ",". Просто в этом случает Автокад Вас не поймет, для него "," это разделение между координатами. Успехов.Подскажите тупому, а как его использовать, запустить?
Лучше использовать чисто "програмистский" подход:
Option Explicit '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' ' Tested on A2009 only ' Require: ' Microsoft Excel XX.0 Object Library ' Tools --> Options --> General tab --> Error trapping --> Break on Unhandled Errors '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' Const xlFileName As String = "C:\UsedFiles\points.xls" '<-- change Excel file name here Const rngAddress As String = "$A$2:$C$27" '<-- change Excel range address here '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' Public Sub PointstoAcad() Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.worksheet Dim xlRange As Excel.Range Set xlApp = CreateObject("Excel.Application") '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' On Error GoTo Error_Control With xlApp .Visible = False 'True Set xlBook = .Workbooks.Open(xlFileName) End With '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' Set xlSheet = xlApp.ActiveSheet '<-- or set sheet by name, e.g.: Set xlSheet = xlApp.Sheets("Sheet1") Set xlRange = xlSheet.Range(rngAddress) xlRange.Select Dim Pts As Variant Pts = xlRange.Value Dim nr As Long, nc As Long nr = xlRange.Rows.Count nc = xlRange.Columns.Count Dim i As Long, j As Long For i = 1 To nr '<-- starts from 1 Dim pt(2) As Double Dim u As Integer u = 0 For j = 1 To nc '<-- starts from 1 pt(u) = RQPT(Trim(CStr(Pts(i, j)))) u = u + 1 Next 'row ThisDrawing.ActiveLayout.Block.AddPoint (pt)'<--Тут выпоняешь любую другую команду (напр. вставку блока в эту точку) ''debug only: Debug.Print CStr(pt(0)) & " ; " & CStr(pt(1)) & " ; " & CStr(pt(2)) Next 'column ZoomExtents MsgBox "Done" Exit_Here: xlBook.Close False xlApp.Quit Set xlBook = Nothing Set xlApp = Nothing Exit Sub Error_Control: If Err.Number <> 0 Then Err.Clear MsgBox Err.Description Resume Exit_Here End If End Sub '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' Function RQPT(dblValue As String) As Double RQPT = Val(Replace(dblValue, ",", ".", 1, -1, vbTextCompare)) End Function '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
[FONT=Arial]~'J'~[/FONT]
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → VBA → Импорт данных из Excel в Acad.
Форум работает на PunBB, при поддержке Informer Technologies, Inc