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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как на VBA создать цикличность добавления Layout с разными именами?

Как на VBA создать цикличность добавления Layout с разными именами?

Ответ
Поиск в этой теме
Непрочитано 01.06.2020, 05:43 #1
Как на VBA создать цикличность добавления Layout с разными именами?
7on
 
Регистрация: 01.06.2020
Сообщений: 3

Добрый день коллеги. Черт меня побрал смастерить одну приблуду на этом вашем VBA но назад дороги нет, тем более уже все что хотел сделанно, со всем разобрался но остался один нюанс который без помощи матерых VBAшников чую победить мне не удастся. Итак: Есть цикл который перебирает строчки в Экселе, в каждый цикл берет содержимое строчки и создает новый лист(Layout) с именем которое в этой строке указанно. В первый цикл создает все как по плану, на втором цикле ругается мол " Run-time error - 2145386493(8020003):неверный ввод"
Код:
[Выделить все]
Sub ExcelToAutocd()
'переменные для коммутации с экселем
Dim AP As Excel.Application
Dim WB As Excel.Workbook
Dim WS As Excel.Worksheet
'переменные для считателя Фор ич
Dim Ran As Variant
'переменные для текста адресов
  Dim AdressStrg As String
'Ссылка на конкретный документ Экселя
Set AP = Excel.Application
Set WB = AP.Workbooks.Open("W:\Torrent\Working2.xlsx")
Set WS = WB.Worksheets("Лист1")
 'Проход по строкам таблици экселя
  For Each Ran In WS.Range("A1:A10")
    AdressStrg = CStr(Ran) 'преобраозвание типа variant в string
 ' Переменные для создания новых Листов (Лэйаутов)
     Dim strTo As String
      Dim objNewLayOut As AcadLayout
      Dim colLayOuts As AcadLayouts
Set colLayOuts = ThisDrawing.Layouts 'Обьявляем новую коллекцию
   strTo = "ПР" + AdressStrg ' В экэселе - адрес пунка оповещения к примеру Пукова 82
   'нужно чтобы лист назывался например ПР Пукова 82
   'Поэтому складываем эти строки и создаем лист с таким именем
    Set objNewLayOut = colLayOuts.Add(strTo)
Next
End Sub
Полагаю новый лист не хочет создавать потому, что совпадают имена (типо переменная strTo одна и таже) но по факту ведь названия в итоге уникальные?!!! Проверял при помощи вывода MsgBox, проверял создавая колнку из строчных текстов - все меняется и работает корректно.
Подскажите пожалуйста где ошибка!? И если ошибка была допущена на этапе выбора языка программирования, то молю, не судить строго, просто раньше никогда дел с этим не имел (на archi cad давно давно что то там кодил) подскажите какие есть соображения как обойти данное недоразумение и все же закончить код.
На форум с тупыми вопросами не лазил, ленту не засорял, во всем терпеливо разбирался сам никого не дергая, и вот уже все финишная прямая и на тебе - такое нелогичное завершение, осталось обойти его и код готов, он поможет сберечь массу времени в будущем!

Последний раз редактировалось Кулик Алексей aka kpblc, 01.06.2020 в 07:36.
Просмотров: 2228
 
Непрочитано 01.06.2020, 07:55
#2
Автон

СЦБ
 
Регистрация: 09.03.2006
Иркутск
Сообщений: 78


Проверьте названия листов.
Не разрешается использование следующих символов: <>/\":;?*|,=`
Автон вне форума  
 
Непрочитано 01.06.2020, 08:43
#3
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,588


Дополню.
Ограничение на количество листов -255 штук, включая модель.
Автокаде не любит пробелы в начале и в конце названия листа. Используйте Trim("Название листа")
Ну и перед добавлением нужно проверять наличие листа с таким же именем, или хотя бы простой обработчик ошибок добавить.
Boxa вне форума  
 
Автор темы   Непрочитано 01.06.2020, 11:40
#4
7on


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


Цитата:
Не разрешается использование следующих символов: <>/\":;?*|,=`
Благодарю но с этим все в порядке, в плане пробного образца названия пока рассово верные, ничего лишнего в тексте нет.
Цитата:
Ну и перед добавлением нужно проверять наличие листа с таким же именем
Да, проверщик есть, оригинальный код довольно обширный , тот, что я выложил специально упрощен для наглядности. Ну а по поводу обработчика ошибок подумаю, спасибо.
7on вне форума  
 
Автор темы   Непрочитано 04.06.2020, 09:11
#5
7on


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


Ну вот в принципе и все. Код работает и это главное. Проблему удалось обойти, без колхоза не обошлось но для личного применения пойдет. Для тех кому интересно как удалось наладить:
В строчку AdressStrg = CStr(Ran) плюсую индекс вот так AdressStrg = CStr(Ran) +CStr(1), наличие этой единици мне безразлично, но почему то благодаря ей все работате, в последующем этот текст потребуется мне без единицы но либо создам другую переменную, либо пропишу удаление этой единицы. Мелочь но добавила много мороки. Всем кто учавствовал спасибо!
7on вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как на VBA создать цикличность добавления Layout с разными именами?

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C#. Переименовать layout expertlight Программирование 7 19.05.2013 17:13
Как создать модель сваи и ростверка в плоском грунтовам масссиве (КЭ 281-284) AlexVak Лира / Лира-САПР 5 05.05.2013 09:45
Как правильно создать расчетную схему фундамента мельницы в Лире? tanaka Лира / Лира-САПР 15 27.02.2013 05:45
ArchiCAD 14 Как создать наклонную стену с разными градусами наклона? salvador ArchiCAD 14 06.02.2012 12:09
Точная настройка viewport в пространстве layout. Composter AutoCAD 25 25.07.2009 18:05