Поиск из 1С в Excel строго соответствующего значения ячейки методами Excel #202444


#0 by uwscsi
Такая получилась загвоздка: Надо из 1С в таблице Excel найти ячейку со значением. Взаимодействую с Excel через OLE. Что получилось- есть у Excel метод Find- очень шустро но из 1с- так и не получилось заставить его искать полную строчку -------------------------------------------------      ЭлТ="Smtn..." -------------------------------------------------- Такая конструкция ищет в экселе все ячейки, куда входит искомая подстрока... Если смотреть на синтаксис VB в Excel, то там работает строчка: Но при попытке это впихнуть в 1с в любом виде начинается ругань... Кто-нить знает, как заставить работать метод из 1С с поиском по полному соответствию? Пробовал ещё один вариант- из 1С создать макрос непосредственно в Excel и запускать уже не метод, а макрос, но по первой же попытке обратиться к VB Excel из 1С vbc=Xls.vbe.ActiveVBProject.VBComponents; был получен отлуп: "Microsoft Office Excel: Программный доступ к проекту Visual Basic не является доверенным" В общем спасибо заранее за любые идеи по этому поводу.
#1 by ТелепатБот
#2 by Рупор2
#3 by asady
можно включить доступ: понизить уровень безопасности: Сервис-Параметры-Безопасность. Это позволит записать и выполнить макрос. Но ИМХО можно сделать это скриптом.
#4 by asady
+ например вот так... это будет поиск целой строки в помеченной области активной книги.
#5 by smaharbA
За селект по рукамбы долбал... Ненада мсскрипт контрола...
#6 by asady
Тогда покажи как надо.
#7 by uwscsi
- Спасибо, про этот вариант в курсе, просто хотелось одной командой получить результат, наверно придётся действовать таким образом. (3,4)- Попробовал, работает однако, но не до конца, или я что-то не понимаю... В переменную "res" возвращается -1, что указывает на успешное завершение функции, но при попытке получить адрес найденной ячейки- ничего не получается- адрес её всегда равено "$1$A1"... Получаю таким образом: Или там какой-то другой хитрый метод получения значений полей объектов должен быть? - а что такое в MSScript control плохого? Почему его не стоит пользовать?
#8 by asady
скрипт работает так как ты просил если теперь хочешь получить адрес, то достаточно Строки Сообщить("Адрес="+Application.ActiveCell.Address);
#9 by asady
в имелось ввиду наверное то, что поиск в отмеченной области не есть хорошо. И с этим я могу согласиться. ИМХО такой поиск надо делать независимо от Selection. Но методика остается примерно такой-же.
#10 by uwscsi
В том-то и дело, что не работает:( Может я что не понимаю но код: Строчка (a) возвращает -1, что казывает, что элемент найден, При этом элемент "а" находится в ячейке по адресу $B$2 В общем я наверо что-то не понимаю...
#12 by uwscsi
И в этом варианте в adr возвращается $A$1 :( Мистика какая-то. Что интересно- в Excel- указатель не перемещается на найденную ячейку...
#13 by asady
у меня это код работает правильно!
#14 by uwscsi
Чёрт, а у меня не пашет. Проверил вплоть до последней буквы... Нагло так с издёвкой в Res.Address помещается значение $A$1 Всё. Делаю по методу . Всем спасибо!
#15 by asady
Есть особенность: Цифири так ищет легко. А вот строки не ищет совсем. Похоже строка в Экселе целиком не совпадает со строкой в 1С. Эксель видимо какой-то служебный символ в конец строки пихает. Поэтому поиск по полному соответствию не пашет.
#16 by uwscsi
Спасибо! Теперича всё понятно. Ох уж эти мелкомягкие...
#17 by Рупор2
+1 Перевод кода из :
#18 by asady
через FindNext перебором по частичным вхождениям и дурак найдет. Вопрос в сабже был поставлен конкретно: найти строку по полному соответсвию одной командой Find как это реализовано в Экселе. вот переделал без Селекта, но и так не рулит... но грабли в том, что поиск по полному (подчеркнуто именно полному) соответсвию никак не рулит из 1Сины.
#19 by Рупор2
Чем плох тот код, который доступен даже дураку и при этом работает ни чуть не медленнее кода, доступного только гениям?
#20 by asady
да ничем не плох. Вопрос стоял по другому. Решение не отвечает на вопрос сабжа.
#21 by Рупор2
Вот и показал бы челу, как найти нужную строчку в эксель однострочной командой, вместо того чтоб два дня парить мозги себе и окружающим ...
#22 by smaharbA
Надо точное соответствие ? Или вхождение ?
#23 by mx-daemon
Была у меня хорошая книжка MS - пресс и называлась программирование VBA. Девушке подарил её. К чему, да вот там было ну просто разжевано как извне искать и т.п. И еще: метод Find возвращает объект типа Range (диапазон) и вовсе не факт, что это именно одна ячейка.
#24 by smaharbA
Если точное, то... ... Если все... ...
#25 by mx-daemon
Нормально ищет строки. Впрочем, легко проверить - сначала записать в ячейку, а потом искать методом Find
#26 by uwscsi
--------------------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Вот только если бы работала такая конструкция. У меня она выдаёт ошибку, как только пытаешься внести ещё хоть какие нить параметры на вход метода Find после искомой строки.
#27 by Рупор2
НомерСтроки=Эксель.WorksheetFunction.Match("цу",Эксель.Columns(НомерКолонкиВКоторойСледуетИскать),0);
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С