Имя: Пароль:
1C
 
Как запустить "заменить" в Excel из 1С8
0 wms
 
05.11.08
10:13
Есть excel файл шаблон.
Из 1С его открываю и надо найти(без перебора по ячейкам)  все  строки с шаблонами и их заменить на нужные значения.
Например во всех ячейках где есть подстрока "[СуммаДокумента]"
заменить на значение этой суммы.

В виде макроса это выглядит так:

Sub НайтиИЗаменить()
   Cells.Replace What:="ИсходнаяСтрока", Replacement:="СтрокаЗамены", LookAt:=xlPart, SearchOrder _
       :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
End Sub

Нужно:
1)Как то доработать это макрос чтобы в параметры ему засылать заменяемую строку и строку замены
и из 1С его запускать

ИЛИ
2) Как то через команду Replace(не найду описания...) запускать из 1С
хотелось бы через 2 вариант сделать
1 wms
 
05.11.08
10:23
Эксель = Новый COMОбъект("Excel.Application");        
Книга = Эксель.WorkBooks.Open(ПутьКфайлуОтчету);
Лист = Книга.WorkSheets("Приложение");
ИсхСтр="[номерДокумента]";
СтрЗамена="12345";
А вот как дальше....
2 Sasha_H
 
05.11.08
10:43
ИМХО нужно ити в сторону АДО там есть SELECT
3 Alter72
 
05.11.08
10:55
в VBA (это язык на котором макросы в экселе) при вызове метода возможно задавать значения параметров через имена параметров, что и использовалось в макросе. При вызове экселя как COM-объект просто используйте тот же порядок без указания имен (только значения).
А вообще если в Редакторе макросов в екселе поставить курсор на слово Replace и нажать Ctrl+F1 то откроется окошко, в котором подробно описано, какие параметры есть, за че они отвечают и какие вообще необязательны.

Из этого следует что в 1С надо добавить в код строку
Лист.Cells.Replace(ИсхСтр, СтрЗамены);

И все!!
В след раз подключайте голову!
4 wms
 
05.11.08
11:12
(3)Спасибо , братэлла, получилось.
делал почти так, но без Cells и ругалось матом.
5 Alter72
 
05.11.08
11:22
(4) В той же самой страничке к помощи Экселю написано что Replace() вызывается для Range (а если говорить правильно, то это метод объекта Range). А сам объект Range возвращается методом Cells(), который присутствует у Worksheet и Application...
А именно объект WorkSheet ты и получил, когда у книги экселя попросил из всех листов лист с именем Приложение:
Лист = Книга.WorkSheets("Приложение");

В самом же экселе перед Cells ничего нет (хотя тоже можно было дописать выбор листа), потому что макрос работает "внутри" объекта Application.
6 wms
 
05.11.08
11:28
(5)буду теперь знать.
7 wms
 
05.11.08
17:55
Надо как то сообщение убрать если строка замены не найдена, то выдает типа
"Подлежащие замене данные не найдены...."
или
перед заменой искать (командой Find()?) то что можно заменить
8 wms
 
06.11.08
10:26
С поиском разобрался.
Теперь надо как то измененный excel файл закрыть не сохраняя и без открытия окна
с вопросом сохранять ли файл
//Книга.Save(); //Сохранение- мне не надо

делаю
Эксель.Quit();

выдает окно с вопросом сохранить файл
как сделать чтобы оно не выводилось?
9 skunk
 
06.11.08
10:36
Книга.Saved = 1;
Эксель.Quit();

так попробуй
10 wms
 
06.11.08
10:40
(9)спасибо. получилось.
11 lanbob
 
12.11.08
05:22
доброе утро.  есть проблема запуска макроса exel из 1С v8.1
кто-нибудь делал это. при запуске
Ex = Новый ComObject("Excel.Application");
...
Ex.Run("NameMacros");
1C выдает ошибку: "Метод Run("NameMacros") объекта не обнаружен.
12 comp2006
 
12.11.08
06:54
(8) Эксель.DisplayAlerts = 0;
   Эксель.Quit();
13 lanbob
 
12.11.08
11:28
это подавление сообщения об ошибке, а мне надо запустить макрос
Независимо от того, куда вы едете — это в гору и против ветра!