Перебрать таблицу значений в VBA #681026


#0 by max735
Здравствуйте, В экселе исполняю макро суть которого сводится к следующему: 1. Вызывается 1С (V82.ComConnector) 2. В 1С вызывается функция которая делает необходимые запросы и возвращает заполненную таблицу значений. 3. Создаю объект в макросе и присваиваю ему ссылку на полученную ТЗ. Dim MyTZ As Object Каким образом можно перебрать строки полученной таблицы значений? Или просто обратиться к нужной ячейке таблицы значений? (Если это вообще возможно). Спасибо.
#1 by shuhard
то, что в VBA нет таблицы значений, разве не очевидно ?
#2 by Zamestas
А не проще из 1С ёксель корячить?
#3 by max735
Дело в том, что я не создаю таблицу значений в самом VBA, таблицу значений создает COM - сервер, в качестве которого выступает 1С. И я в принципе могу управлять это ТЗ, например вызвать функцию Количество и получить результат. Но мне нужно добраться до конкретных ячеек ТЗ и получить значение оттуда. Собственно в этом вопрос.
#4 by Infsams654
+ круто!. Пусть в макросе получает построчно данные из 1С и заполняет свой Dim
#5 by max735
Наверное проще, но логичнее, чтобы клиент вы виде экселя подсоединялся к 1С.
#6 by Infsams654
+100 - это правильно, ёксель подключается к базе 1С и макросом заполняет красивошную табличку
#7 by max735
Не хотелось бы, поскольку функция носит универсальный характер и возвращает именно ТЗ. В 1С для перебора используется либо "Для Каждого", либо оператор []. Скорее всего есть способ, просто я его не знаю.
#8 by Infsams654
так Shuhard же написал, откуда VBA знает, что такое 1С-ское ТЗ
#9 by Rie
Нет способа. В 1С есть итераторы (хоть и в кастрированном варианте). В VBA - увы!
#10 by max735
А нельзя ли создать через COM в 1С какой-нибудь итератор и натравить его на таблицу значений? А потом просто забрать нужное значение...
#11 by dk
???? Получить (Get) Синтаксис: Получить(<Индекс>) Параметры: Тип: Число. Индекс строки. Возвращаемое значение: Тип: СтрокаТаблицыЗначений. Описание: Получает значение по индексу. Работает аналогично оператору []. Доступность: Сервер, толстый клиент, внешнее соединение. Примечание: Применяется в случаях, когда использование оператора [] невозможно. "
#12 by ZanderZ
у MyTZ есть количество и получить
#13 by Rie
, Можно было бы. Но в _VBA_ нет итераторов. Их можно сымитировать другими средствами. Но - надо _сымитировать. Вот именно. Когде невоможно.
#14 by max735
Как-то я пропустил про "Получить", сейчас попробую. Спасибо.
#15 by Infsams654
чего получить? в 3-й раз повторяю из "то, что в VBA нет таблицы значений, разве не очевидно ?"
#16 by Rie
Нет. VBA знакомо с интерфейсами.
#17 by dk
Цикл же есть Для Сч = 0 По (MyTZ.Количество - 1) зато есть ком объект
#18 by ZanderZ
плохо что повторяешь - попробовал бы не повторял
#19 by shuhard
ты это ТС-у объясни
#20 by max735
С применением вызова функции "Получить(i)", все получилось. ТЗ нормально перебирается. Всем большое спасибо за помощь.
#21 by бомболюк
Неужели в VBA такое не будет работать: for each objRow in objTable ' тут тело цикла next что то не верится. и в VB, и в VBScript работает.
#22 by бомболюк
неправда твоя ;-) работает все. вот только что из екселя отработало на ура: Private Sub CommandButton1_Click     Dim objConnection As Object     Dim objBase As Object     Dim objStructure As Object     Dim objVal As Object
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям