Тема: Импорт данных из Excel в Acad.

Помогите!!! Скажите, есть ли какиенить примочки для конвертирования данных из Excel в Acad.
Надо, чтобы из Excelевской таблички  автоматически формировался Лист общих данных в Acadе, желательно 2000-м!

Re: Импорт данных из Excel в Acad.

Вы можете, пожалуй, попробовать просто перекинуть через буфер, но могут поехать шрифты.

Re: Импорт данных из Excel в Acad.

Наверное, неполностью выразила задачу! wacko2
Мне надо чтобы при вводе данных в определенные поля в Excel, у меня автоматически заполнялись соответствующие поля на листе общих данных в Acade!!!
Этот процесс надо автоматизировать, а не чтобы вручную люди делали двойную работку!!!

Re: Импорт данных из Excel в Acad.

Тебе в программирование VBA $)
PS: А иначе никак, чужой дядя не придет и не набьет их там.

Re: Импорт данных из Excel в Acad.

А на вопрос никак вы и не орветили!

Re: Импорт данных из Excel в Acad.

Без программирования на VBA вряд ли обойдешься.
Я похожую задачу реализовал следующим образом:
1) программа из под Excel создает на основе моего AutoCad-шаблона файл с нужной таблицей. Строка таблицы - блок с атрибутами. просто в цикле добавляем блоки и заполняем атрибуты данными из excel-вской таблицы.
2) если данные в excel-таблице поменялись - программа из под AutoCad обновляет данные, ориентируясь на совпадение одного из атрибутов (он может быть невидимым) со значением из ячейки в excel-таблице.
т.о. надо написать два макроса - один в excel, другой - в AutoCad

Re: Импорт данных из Excel в Acad.

Я делал подобную вепрограммулину. В Excel макрос не нужен.
После установки связи с Excel (GetObject) в ACAD становятся доступными все функции и данные Excel . В тексте программы ссылку на объект, точка, код VBA Excel.
Проблемма возникает в форматировании - строки Еxcel могут не помещатся в рамках ячеек чертежа общих данных.
Но если известен стиль ACAD эту проблемму можно решить.
С наиулучшими пожеланиями,
Вадим.

Re: Импорт данных из Excel в Acad.

Пасиба преогромнейшее за помощь!
Двигаюсь в нужном направлении и задачка как будто сама собой решается благодаря ВАМ!!!

Re: Импорт данных из Excel в Acad.

Такс, на всякий случай я кину макрос небольшой, которым пользуюсь постоянно... он основан на командах лиспа

 Function PointXYZToAutocad(KoX, KoY, KoZ)
PointXYZToAutocad = "(command " + """_POINT"" " + """" + CStr(KoX) + "," + CStr(KoY) + "," + CStr(KoZ) + """)"
End Function 

PS: только убедитесь что символ разделения целой и дробной части у Вас ".", а не стандартная ",". Просто в этом случает Автокад Вас не поймет, для него "," это разделение между координатами. Успехов.

Re: Импорт данных из Excel в Acad.

Блин, забыл сказать что для нанесения точки в автокад достаточно скопировать результат в буффер и вставить в коммандной строке автокада.
PS: такого типа код применим к рисованию любых объектов!

Re: Импорт данных из Excel в Acad.

Nesmit пишет:

Такс, на всякий случай я кину макрос небольшой, которым пользуюсь постоянно... он основан на командах лиспаКод Function PointXYZToAutocad(KoX, KoY, KoZ)PointXYZToAutocad = "(command " + """_POINT"" " + """" + CStr(KoX) + "," + CStr(KoY) + "," + CStr(KoZ) + """)"End Function PS: только убедитесь что символ разделения целой и дробной части у Вас ".", а не стандартная ",". Просто в этом случает Автокад Вас не поймет, для него "," это разделение между координатами. Успехов.

Подскажите тупому, а как его использовать, запустить?

Re: Импорт данных из Excel в Acad.

Виктор t пишет:


Цитата   


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]