Из 1С записать формулу в ячейке MS EXCEL

Из 1С записать формулу в ячейке MS EXCEL

Свежий простой пример - рассмотрим, как указать для ячейки формулу:

Ексель.Cells(1,3).Formula= "=СЦЕПИТЬ(E1;C7)";

Первое, на что хочу обратить внимание - те функции, которые Вы видите визуально в ячейке MS EXCEL для 1С "слегка не знакомы", ей лучше озвучить имя функции на VBA. А откуда Вы узнаете, как эта функция на VBA называется. Я Вам расскажу, немного терпения

  • Открываем новую книгу MS EXCEL
  • Идем в меню Сервис - Макрос - Начать запись - Ок (появится маленькое окошко с квадратной кнопкой - его не кое случае не закрывать)
  • Кликаем ячейку "С1" и пишем в ней формулу =СЦЕПИТЬ(E1;C7)
  • После этого нажимаем на квадратную кнопочку (Мы только что с Вами записали макрос на языке VBA)

Посмотрим что получилось. Идем в меню Сервис - Макрос - Макросы - (там будет в новой книге по умолчанию Макрос1) - выбираем его и нажимаем кнопку "Войти". Поздравляю - мы попали во встроенный редактор VBA (аналог конфигуратора 1С). И что мы видим:

Теоретически нам отсюда нужно только:

это и будет для 1С =

Cells(1,3).Formula= "=СЦЕПИТЬ(E1;C7)";" "

проверим напишем код на любимом 1С

Немного подумав, Вы поймете, что:

можно заменить на

и результат не изменится, а возможностей прибавится.

В 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 ) Еще одна ссылка на сайт, посвященный работе с макросами

Специальные предложения
  • Скопировать ссылку
  • Перейти

(1) Пользуясь тем же методом что и автор, можно много чего раскопать =). В екселе есть несколько отличный от 1с способ установки масштаба: количество страниц в ширину и в высоту. Чтоб добиться нужного результата (установки печати по ширине страницы) можно задать одну страницу в ширину и заведомо большое значение в высоту. Например так:

Ехсел=СоздатьОбъект("Excel.Application"); . . Ехсел.ActiveSheet.PageSetup.Orientation = 1; //ориентация Ехсел.ActiveSheet.PageSetup.PaperSize = 9; //размер бумаги Ехсел.ActiveSheet.PageSetup.Zoom = False; Ехсел.ActiveSheet.PageSetup.FitToPagesWide = 1;//страниц в ширину Ехсел.ActiveSheet.PageSetup.FitToPagesTall = 100;//страниц в высоту

  • Скопировать ссылку
  • Перейти
  • Скопировать ссылку
  • Перейти
  • Скопировать ссылку
  • Перейти
  • Скопировать ссылку
  • Перейти
  • Скопировать ссылку
  • Перейти

Спасибо за комментарии и отзывы - очень приятно. И правильно Вы заметили - цель этой статьи, не "тупо" дать алгоритм на копипаст а рассказать , как несложными действиями самому научится находить ответ на нужный вопрос. Отдельное спасибо (4) MoneG2 , как он правильно указал есть еще одно решение данного вопроса и это показывает и еще раз доказывает , что в программировании - любую задачу, можно решить РАЗНЫМИ способами.

Спасибо (3) Alltruist - за добавление к статье, очень хороший пример.

(6) larisab , как то решал твою "проблему" следующим способом ручками написать макрос и его в автозагрузку (личную книгу макросов) он смотрит при открытии файла , если есть определенная метка например в ячейке "AW" = 1 значит такой формат листа если 2 то другой и так до бесконечности. а при написании кода в 1С , ты помнишь и формируешь таблицу согласно правилам данного макроса. и вот теперь . только пользуясь стандарным методом "Сохранить как. " в Еxcel у тебе будет все в шоколаде ))) это не панацея это только пример. (кстати у меня в публикация есть пример создания макроса из 1С)

  • Скопировать ссылку
  • Перейти
  • Скопировать ссылку
  • Перейти

(4) и (7) заодно: Не корысти ради, а токмо волею пославшей. - не LocalFormula, а FormulaLocal; - если нет планов по распространению за границы, то (лучше?) быстрее писать в родной локали, ибо не придется так нудно выяснять, что СЦЕПИТЬ шифруется как CONCATENATE; - и если кому-то вдруг да придется разбираться со множеством формул, так для перевода локализованных названий функций в оригинальные существует прямо от авторов Екселя секретная книга FUNCS.XLS, спрятанная где-то в недрах типа "X:\Program Files\Microsoft Office\Office12\1049\FUNCS.XLS", и там все-все имена расписаны: откроешь её, и сразу можно узнать, что ОКРУГЛТ - это MROUND и тому подобное

  • Скопировать ссылку
  • Перейти

+(44) Program Files\Microsoft Office\OFFICE1 1 \1049 - для 2003 Офиса

а еще красота в том, что можно самому из 1С написать функцию и уже в ячейках ссылаться на нее. и она будет доступна в меню -вставка -функция- пользовательские

  • Скопировать ссылку
  • Перейти
  • Скопировать ссылку
  • Перейти
  • Скопировать ссылку
  • Перейти

(46) "достаточно чтобы сервер стоял не русский, а ваш код выполнился на сервере. или офис был не русский. частая ситуация" - Ох! Сочувствую, если для вас это частая ситуация. Но - по-моему - это лишь когда админ ненавидит локализованные версии чего бы то ни было, и ставит всё везде аглицкое. (Я о таких админах только слыхал. ) Вот ОпенОффис - это да, этот, видимо, может понимать или не понимать разные функции саавсем по-разному; но с ним не пришлось мне работать.

(45) Буквоедство я тоже люблю. Ну так сложилось, у меня лично есть и OFFICE11, и OFFICE12, и там и там есть FUNCS.XLS, и вообще он был в соответствующей папке со времен Офиса 97.

(47) и (49) - константы быстрее всего смотреть из редактора VBA, но без всякого F2 и поиска, а правой кнопкой по имени константы и выбрать Quick Info. А БОЛЬШОЙ список внутренних констант находится в справке Excel: для Офиса 2003: F1 - Оглавление - Microsoft Excell Visual Basic Reference - Enumerations - Microsoft Excell Constants, вверху справа жмакнуть "Показать все" и смотреть все, смотреть, смотреть. Вот, правда, пояснений там нет. Да! И еще надо, чтоб при установке Офиса справку по VBA тоже установили.

  • Скопировать ссылку
  • Перейти

при работе из 1с с ОО итак есть проблемы (одинэсный код для Екселя и ОО несколько отличается!) Поэтому, например, когда я писал обработку, которая должна была работать и там и сям, приходилось проверять на установленность екселя на компе.

  • Скопировать ссылку
  • Перейти
  • Скопировать ссылку
  • Перейти
  • Скопировать ссылку
  • Перейти

работать это будет только с русской локалью.

  • Скопировать ссылку
  • Перейти
  • Скопировать ссылку
  • Перейти
  • Скопировать ссылку
  • Перейти
  • Скопировать ссылку
  • Перейти
  • Скопировать ссылку
  • Перейти
  • Скопировать ссылку
  • Перейти
  • Скопировать ссылку
  • Перейти
  • Скопировать ссылку
  • Перейти

кому будет интересно по работе с VBA MS EXCEL посмотрите вложенный файл называется "Справка-расчет денежной компенсации за вещевое имущество" этот программа на макросах была написана " в окопе, на сапоге убитого командира.." во время бурной молодости и славной службы в ВС РФ. и не поверите заняла почетное 3-е место в конкурсе Microsoft Office Extensions в 2003 г. (подарили полный набор офиса 2003 на 18 компакт дисках, сертифакт, пресса. вообщем приятно было) Выбор пал (а это был 2001 год на EXCEL, только из-за доступности для военнослужащих т.к. про 1С . ну вообщем вы поняли)

  • Скопировать ссылку
  • Перейти

На сладкое. К последней фразе поста автора. И к наступающему. :D Если 1С считать (а оно так и есть по сути) надстройкой на экселем, то мы имеем воплощенную мечту идиота, которая выражается тостом: "За то чтобы ваши желания охренели бы перед вашими возможностями!"

  • Скопировать ссылку
  • Перейти
  • Скопировать ссылку
  • Перейти
  • Скопировать ссылку
  • Перейти

(22) по оценке самих специалистов MS Oficce среднестатический пользователь EXCEl использует его возможности только на 5-7% . А возможности его безграничны.

(20) не завидуй плюсам данной публикации - зачем гуглить (человеку нужно уходить с сайта) , если все можно будет найте на родном http://infostart.ru - это же ОГРОМНАЯ КОПИЛКА ЗНАНИЙ и ОПЫТА.

ситуация , когда начинайщий программист (да и не только ) тупо скопипастил какую либу функцию или процедуру и даже не разобрался что она делает и КАК ОНА это делает (работает и работает)- думаю в пример приводить не стоит. А вот когда человек сам доходит до этого, сам нашел и разобрался, как найти , как научится - это намного ДОРОЖЕ любого ПЛЮСА, это плюс в ЕГО копилку знания и опыта. Вот цель этой статьи.

📎📎📎📎📎📎📎📎📎📎