![]() |
|
Как запустить "заменить" в 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
|
это подавление сообщения об ошибке, а мне надо запустить макрос
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |