| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > VBA - работа с datalink (datalinkmanager)

VBA - работа с datalink (datalinkmanager)

Ответ
Поиск в этой теме
Непрочитано 16.03.2009, 09:25 #1
VBA - работа с datalink (datalinkmanager)
Сергей Богатов
 
Регистрация: 21.02.2009
Сообщений: 825

Леди и джентльмены! Гуру программирования! Помогите кто чем может
Дано: файлы Excel с именованными диапазонами и dwg-шки с таблицами. Осуществляется связь с через datalink. В среднем 20 диапазонов - менять руками путь - 20 сек на link - 400 сек на чертёж. Чем больше чертежей, тем больше времени и нервов. Да и мышку с клавиатурой жалко

Задача - как средствами VBA(LISP или чем получится) поменять путь и именованный диапазон в datalink. Рылся в хелпе - там тишина. Помогите!
P.S.
Tools->DataLinks->Datalinkmanager

P.P.S.
Выложил пример с .xls(именованными диапазонами) и .dwg(c datalink на некоторые диапазоны) и cabinets.txt с списком. Файлы .xls и cabinets.txt генерятся из большой таблицы потребителей. Соответственно имя файла и названия именованных диапазонов завязаны. Сейчас я, сделав один .dwg и настроив все
даталинки, копирую его и ручками меняю путь к файлу и именованный диапазон. Хочется автоматизировать этот процесс.
P.P.P.S.
Если это можно сделать в LISP, то это будет сильным стимулом к его изучению

Вложения
Тип файла: rar datalinks.rar (123.3 Кб, 105 просмотров)


Последний раз редактировалось Сергей Богатов, 26.03.2009 в 09:10. Причина: добавляю пример
Просмотров: 6895
 
Непрочитано 17.03.2009, 17:57
#2
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,091


См. тут http://forums.augi.com/showthread.php?p=937444
и еще в сцылках из этой ветки
kp+ вне форума  
 
Непрочитано 25.03.2009, 11:08
#3
gizmo_zx

Проектировщик ЭО,ЭМ, ЭОС
 
Регистрация: 18.07.2007
Нижний Новгород
Сообщений: 256
<phrase 1= Отправить сообщение для gizmo_zx с помощью Skype™


Тут без Кулик Алексей aka kpblc не разобраться!
Программу из http://forums.augi.com/showthread.php?p=937444
скачал, но не пошла, может кто глянет
Вложения
Тип файла: zip UnrealSOFT.zip (3.5 Кб, 92 просмотров)

Последний раз редактировалось gizmo_zx, 27.03.2009 в 12:40.
gizmo_zx вне форума  
 
Непрочитано 26.03.2009, 01:45
#4
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Сергей Богатов, так я, например, не понял: что, имена файлов сменились? А диапазоны с листами? Или поменялись только каталоги расположения xls-файлов? Кстати, выложи пример - лично мне лениво делать DataLink (я им не пользуюсь; и без него обычно весело).
gizmo_zx, у тебя в архиве нет dcl-файла, вот и все.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 26.03.2009, 09:14
#5
Сергей Богатов


 
Регистрация: 21.02.2009
Сообщений: 825


Выложил пример с файлами - см. #1
__________________
Я-проектировщик бывший проектировщик!

Последний раз редактировалось Сергей Богатов, 26.03.2009 в 13:54.
Сергей Богатов вне форума  
 
Непрочитано 27.03.2009, 00:07
#6
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Попробуй выкачать из темы http://forum.dwg.ru/showthread.php?p=373862#post373862 приложенный arx (работает в 2007-2009). Загружаешь его, и смотри Database Info, раздел Dictionaries. Там очень многое видно. Я попытался расковырять словарь ACAD_DATALINK и его элементы, но что-то запутался
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 27.03.2009, 11:56
#7
Сергей Богатов


 
Регистрация: 21.02.2009
Сообщений: 825


СПАСИБО! будем разбираться

P.S.
Посмотрел - что то там как-то маловато свойств... Вобщем - не помогло
__________________
Я-проектировщик бывший проектировщик!

Последний раз редактировалось Сергей Богатов, 01.04.2009 в 14:50.
Сергей Богатов вне форума  
 
Автор темы   Непрочитано 04.06.2009, 13:18
#8
Сергей Богатов


 
Регистрация: 21.02.2009
Сообщений: 825


Коечто нарыл,но есть вопрос- VBA или .NET дружит с dxf кодами?
__________________
Я-проектировщик бывший проектировщик!

Последний раз редактировалось Сергей Богатов, 04.06.2009 в 13:31.
Сергей Богатов вне форума  
 
Непрочитано 16.06.2009, 19:39
#9
nic26


 
Регистрация: 01.02.2009
Сообщений: 3


Для решения этой задачи возможно достаточно VBA. У объекта "Table" есть доступ к DataLink (кажется через SetDataLink и GetDataLink). Но поскольку я так и не понял какая именно операция делается вручную, хотя пример посмотрел, то затрудняюсь сказать достаточно ли этого. В худшем случае потребуется лезть в словарь ACAD_DATALINK (см. ссылки выше), что тоже возможно из VBA.

Последний раз редактировалось nic26, 16.06.2009 в 19:47.
nic26 вне форума  
 
Непрочитано 16.06.2009, 23:00
#10
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


SetDataLink и GetDataLink вплоть до 2010 версии работают некорректно, насколько я помню.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 22.06.2009, 14:48
#11
Сергей Богатов


 
Регистрация: 21.02.2009
Сообщений: 825


SetDataLink и GetDataLink - это про связь между акадовскими таблицами, а не про связь акад-эксель
__________________
Я-проектировщик бывший проектировщик!
Сергей Богатов вне форума  
 
Непрочитано 23.06.2009, 01:06
#12
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Точно?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 19.11.2016, 00:22
#13
Theodor


 
Регистрация: 16.04.2009
Петрозаводск
Сообщений: 323


Оживлю тему, дабы не создавать новую.
Вопрос в целом такой, как именно средствами VBA, можно работать со "связями с данными".
Конкретно есть необходимость:
- удалять связи, которые уже не привязаны к таблицам в данном чертеже (а то они плодятся при копировании таблиц со связями из файла в файл);
- подменять в связях информацию о файле источнике (путь, имя), а так же диапазон ячеек (лист, именованный диапазон).
Спасибо.
Theodor вне форума  
 
Непрочитано 19.11.2016, 23:39
#14
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Цитата:
Сообщение от Theodor Посмотреть сообщение
Вопрос в целом такой, как именно средствами VBA, можно работать со "связями с данными".
Коротенькая тема здесь Изменить связи с Excel через VBA ?
И ответ оттуда
Цитата:
Такого типа у меня нет и соответственно объект создать не удается.
Ты сам ответил на свой вопрос. Средствами VBA ты результата не добьёшься. Так что или ObjectARX или .NET
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 20.11.2016, 02:07
#15
Theodor


 
Регистрация: 16.04.2009
Петрозаводск
Сообщений: 323


VVA, Печально как-то... А лисп умеет со связями работать? Кроме как удалять?
Theodor вне форума  
 
Непрочитано 20.11.2016, 17:15
#16
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,004


VBA достаточно "урезанный" язык, по мере роста "аппетита" все чаще и чаще будете упираться в ограничения объектной модели. Сейчас реально использую его только со стороны MSOffice, подключаясь по COM-интерфейсу к акаду - для самых простых вещей. Подумайте, может перейти на такой режим работы с акадом.
Сергей812 вне форума  
 
Непрочитано 20.11.2016, 17:55
#17
Theodor


 
Регистрация: 16.04.2009
Петрозаводск
Сообщений: 323


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Сейчас реально использую его только со стороны MSOffice
Да вот и я то же только из-за VBA офиса в автокаде сижу на том же. Пока только из VBA автокада обращался к книгам Excel (выгружал некоторые данные, типа как извлечения). Со стороны офисных приложений в автокад пока не совался (не пробовал даже).
А что, есть вариант из экселевского VBA достучаться до связей с данными автокад?

И мне пока не ведома такая вещь, как COM-интерфейс.

В целом то задача банальна. В чертеже есть куча таблиц с привязками к диапазонам ячеек (как правило именованным) в файлах экселя.
Для большинства задач в автокаде приходится менять у таблиц эти самые диапазоны. Работа ручками с "редактором связей с данными" утомляет своей тормознутостью. Благо есть "диспетчер внешних ссылок", где хотя бы путь к файлу можно быстро поменять (увы, пользую 2008 кад, там нет относительных ссылок).
Кроме того, при копировании таблицы со связью в другой файл, туда копируются все ссылки на связи. Потом в диспетчере хаус!

Ведь должны существовать программные методы:
- удалять связи с данными;
- отсоединять от таблиц и от типов таблиц связи с данными;
- переименовывать связи с данными, так чтоб они оставались привязанными к таблице (типу таблицы);
- менять имя файла-источника, путь к нему, диапазон ячеек (в том числе именованный)
Theodor вне форума  
 
Непрочитано 20.11.2016, 19:12
#18
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,004


Цитата:
Сообщение от Theodor Посмотреть сообщение
А что, есть вариант из экселевского VBA достучаться до связей с данными автокад?
с чего бы - по сути работа изнутри с объектной моделью (ActiveX) через VBA и снаружи через COM-интерфейс особо не отличается с точки зрения кода.
Сергей812 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > VBA - работа с datalink (datalinkmanager)

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пароль к VBA karp_b Программирование 24 29.08.2013 12:43
В чем зло VBA? Vildar Разное 224 18.03.2009 21:26
ActiveX Automation из VBA karp_b Программирование 5 14.09.2007 18:05
VBA vs LISP Kosenko Sasha LISP 23 06.03.2007 02:56
Работа в VBA с MS Equation 3.0 Михаил_М Программирование 1 21.10.2006 17:28