Часто слышу этот вопрос: "Как сделать, как написать?!" Объяснить сразу мне трудно, поэтому давайте "на пальцах"
Свежий простой пример - рассмотрим, как указать для ячейки формулу:
Ексель.Cells(1,3).Formula= "=СЦЕПИТЬ(E1;C7)";
Первое, на что хочу обратить внимание - те функции, которые Вы видите визуально в ячейке MS EXCEL для 1С "слегка не знакомы", ей лучше озвучить имя функции на VBA. А откуда Вы узнаете, как эта функция на VBA называется??? Я Вам расскажу, немного терпения
- Открываем новую книгу MS EXCEL
- Идем в меню Сервис - Макрос - Начать запись - Ок (появится маленькое окошко с квадратной кнопкой - его не кое случае не закрывать)
- Кликаем ячейку "С1" и пишем в ней формулу =СЦЕПИТЬ(E1;C7)
- После этого нажимаем на квадратную кнопочку (Мы только что с Вами записали макрос на языке VBA)
Посмотрим что получилось. Идем в меню Сервис - Макрос - Макросы - (там будет в новой книге по умолчанию Макрос1) - выбираем его и нажимаем кнопку "Войти". Поздравляю - мы попали во встроенный редактор VBA (аналог конфигуратора 1С). И что мы видим:
Sub Макрос1() Range("C1").Select ActiveCell.FormulaR1C1 = "=CONCATENATE(RC[2],R[6]C)" Range("C2").Select End Sub
Теоретически нам отсюда нужно только:
Range("C1").FormulaR1C1 = "=CONCATENATE(RC[2],R[6]C)"
это и будет для 1С =
Cells(1,3).Formula= "=СЦЕПИТЬ(E1;C7)";" "
проверим напишем код на любимом 1С
Процедура Сформировать()
Перем Кат,Шаб;
Ехсел=СоздатьОбъект("Excel.Application");
Книга=Ехсел.Workbooks;
Если ФС.ВыбратьФайл(0,Кат,Шаб,"Выбери файл Еxcel",,"*.xls",)=1 Тогда
Книга.Open(Шаб+Кат);
Ехсел.Range("C1").FormulaR1C1 = "=CONCATENATE(RC[2],R[6]C)";
Книга.Close();
Ехсел="";
КонецЕсли;
КонецПроцедуры
Все работает!
Немного подумав, Вы поймете, что:
Ехсел.Range("C1").FormulaR1C1 = "=CONCATENATE(RC[2],R[6]C)";
можно заменить на
Ехсел.Cells(1, 3).FormulaR1C1 = "=CONCATENATE(RC[2],R[6]C)";
и результат не изменится, а возможностей прибавится.
В MS EXCEL только амлет нельзя пожарить - возможности его одурманивают.
Я рад , что кому-то эта статья пригодилась. Спасибо Вам всем.
И чтобы закрепить материал, напишу задачу (недавно она здесь на портале была озвучена).
Многие делают отчеты и сохраняют в EXCEL... так вот задача стояла в следующем, чтобы при открытии файла у таблицы стоял фильтр с заданными параметрами (пример таблицы на рис.1, а нужно получить (например все товары у которых количество равно 11) рис.2.)
Попробуйте решить сами на языке 1С.
ОТВЕТ:
Ехсел.Range("C5:D5").AutoFilter (); //создаем автофильтр
Ехсел.Range("C5:D5").AutoFilter (2,"11"); //указаваем столбец и значение фильтр
В связи с большим количеством комментариев у данной публикации, решил выложить то, что, по моему мнению, не должно "утонуть" в потоке информации:
Пост (44) Рассказывает нам где находится файл FUNCS.XLS - который содержит полезную информацию по формулам EXCEL - прислал gaglo
Пост (55) Подарил на ссылку на замечательную Функция по возврату констант EXCEL - прислал JohnyDeath
Пост (59) Добавил ссылку на русскоязычный сайт посвященный EXCEL - прислал an77
Пост (61) Еще одна ссылка на сайт, посвященный работе с макросами