Из 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С). И что мы видим:

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

72 Comments

  1. larisab

    А как можно сделать так, чтобы при выгрузке из 1С 8 методом «сохранить как…» в екселе сразу устанавливался формат «по ширине страницы»?

    Возможно в екселе 2007 есть галочка, где поставить можно, но что то не могу найти.

    Reply
  2. msadu

    спасибо вам большое плюсик добавлю с удовольствием

    Reply
  3. Alltruist

    (1) Пользуясь тем же методом что и автор, можно много чего раскопать =).

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

    Ехсел=СоздатьОбъект(«Excel.Application»);

    …………………..

    …………………..

    Ехсел.ActiveSheet.PageSetup.Orientation = 1; //ориентация

    Ехсел.ActiveSheet.PageSetup.PaperSize = 9; //размер бумаги

    Ехсел.ActiveSheet.PageSetup.Zoom = False;

    Ехсел.ActiveSheet.PageSetup.FitToPagesWide = 1;//страниц в ширину

    Ехсел.ActiveSheet.PageSetup.FitToPagesTall = 100;//страниц в высоту

    Reply
  4. MoneG2

    вообще, если читать документацию внимательно, можно без зазрения совести писать:

    Ехсел.Cells(1, 3).LocalFormula = «=СЦЕПИТЬ(E1;C7)»;

    Reply
  5. mangust_AT

    Спасибо за раскопки! Помню, нужно было, но не докопался. +

    Reply
  6. larisab

    (3) Alltruist, спасибо, конечно, пригодится. Но проблему мою это не решит. Тут не лезу в код, использую встроенную в 1с возможность выгрузки, и в момент открытия в екселе, надо найти где это сделать. В разметке страницы есть опция, но она уже на сформированном листе действует, а мне хотелось до того как. Ну если нельзя, то придется написать выгрузку, и буду очень благодарна автору топика за мастер-класс. Жду развития и продолжения.

    Reply
  7. ilp06
    Ехсел.Cells(1, 3).LocalFormula = «=СЦЕПИТЬ(E1;C7)»;

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

    Ехсел.Cells(1, 3).FormulaR1C1 = «=CONCATENATE(RC[2],R[6]C)»;

    будет работать всегда и везде.

    Reply
  8. Tatitutu

    Спасибо за комментарии и отзывы — очень приятно. И правильно Вы заметили — цель этой статьи, не «тупо» дать алгоритм на копипаст

    а рассказать , как несложными действиями самому научится находить ответ на нужный вопрос.

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

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

    (6) larisab , как то решал твою «проблему» следующим способом

    ручками написать макрос и его в автозагрузку (личную книгу макросов)

    он смотрит при открытии файла , если есть определенная метка

    например в ячейке «AW» = 1

    значит такой формат листа

    если 2 то другой

    и так до бесконечности…

    а при написании кода в 1С , ты помнишь и формируешь таблицу

    согласно правилам данного макроса.

    и вот теперь …только пользуясь стандарным методом «Сохранить как…»

    в Еxcel у тебе будет все в шоколаде )))

    это не панацея это только пример.

    (кстати у меня в публикация есть пример создания макроса из 1С)

    Reply
  9. JohnyDeath

    А у меня другой вопрос. Чем отличаются свойства «FormulaR1C1», «Formula»? (по-моему еще какие-то «Формулы» были)

    Reply
  10. ilp06
    А у меня другой вопрос. Чем отличаются свойства «FormulaR1C1», «Formula»? (по-моему еще какие-то «Формулы» были)

    R1C1 — вот этим и отличается 😀

    тип ссылок это.

    Reply
  11. larisab

    (8) Спасибо! буду учиться писать макросы. Тема очень интересная ❗

    Reply
  12. СергейКа

    (9) «FormulaR1C1» — предопределяет использование ссылок типа «R1C1». Т.е. в не зависимости от того как у тебя в настройках стоит обозначение ссылок (буквы или цифры). Лучше использовать, так как неоднократно сталкивался с тем, что обработка создающая Экселевский файл прекрасно создавала на одном компе и «спотыкалась» на другом. А вся проблема была только в «цифро-буквенном» обозначении…

    Reply
  13. JohnyDeath

    (10) а как-нибудь по подробнее про эти типы ссылок можно?

    Reply
  14. JohnyDeath

    (12) Спасибо. Вопрос (13) снимается

    Reply
  15. СергейКа

    В дополнение к (12):

    Для уже ранее созданного файла не имеет значение, какая формула стоит. Но вот при создании из 1С файла Эксель локальные настройки бывают критичны…

    Reply
  16. D9ID9I_SaIIIa

    Все вопросы по поводу формул в excele у меня ещё в 15.26 вчера исчезли

    http://www.infostart.ru/forum/messages/forum9/topic29462/message330677/#message330677 (5)

    Но всё равно + 😀

    Reply
  17. ZERO_

    Лично я редко использую Ексель, еще реже Ексель+1С. Но, Ексель — поистине мат. комбайн 😀 Например, можно встроенными функциями решать задачи оптимизации (без долгого и трудного написания кода на 1с), в Екселе есть прекрасный поиск решения! — Для решения оптимизационных задач, задач рассчета з/п — сам лично его применял.

    Reply
  18. Tatitutu

    кому будет интересно по работе с VBA MS EXCEL

    посмотрите вложенный файл

    называется «Справка-расчет денежной компенсации за вещевое имущество»

    этот программа на макросах была написана » в окопе, на сапоге убитого командира..» во время бурной молодости и славной службы в ВС РФ.

    и не поверите заняла почетное 3-е место в конкурсе Microsoft Office Extensions в 2003 г. (подарили полный набор офиса 2003 на 18 компакт дисках, сертифакт, пресса….вообщем приятно было)

    Выбор пал (а это был 2001 год на EXCEL, только из-за доступности для военнослужащих т.к. про 1С …ну вообщем вы поняли)

    Reply
  19. СЫРОЖА

    На сладкое…

    К последней фразе поста автора… И к наступающему… 😀

    Если 1С считать (а оно так и есть по сути) надстройкой на экселем,

    то мы имеем воплощенную мечту идиота, которая выражается тостом:

    «За то чтобы ваши желания охренели бы перед вашими возможностями!»

    Reply
  20. Noy

    Заметка полезная, но количество плюсов говорит только о том, что подавляющее большинство программистов ленится просто погуглить (я уж молчу про чтение мануалов или спецлитературы).

    Reply
  21. venger

    (20) Скорее о том, что с Excel вообще толком не знакомы;-)

    Reply
  22. Tatitutu

    (22) по оценке самих специалистов MS Oficce

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

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

    ситуация , когда начинайщий программист (да и не только ) тупо скопипастил какую либу функцию или процедуру и даже не разобрался что она делает и КАК ОНА это делает (работает и работает)- думаю в пример приводить не стоит.

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

    Reply
  23. Noy

    (22) Ты меня не так понял — никаких претензий к твоей заметке я не имею, и уж тем более плюсам не завидую.

    Я просто отметил весьма быстрый прирост плюсов и сделал вывод, которым и поделился.

    Reply
  24. larisab

    (23) Да когда екселем заниматься было, 1С с их ЖК и пр. весь мозг съел

    Reply
  25. Трактор

    (22) Однако если плюсАми меряться , то Noy круче чем Tatitutu. 🙂

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

    Reply
  26. Арчибальд

    (25) Вот меряться не надо. Линейки с капканами бывают 😀

    Reply
  27. Tatitutu

    (25) К чему ты это написал ? кто такой Noy и его работы — я прекрасно знаю — и уважаю его и его мнение , как и каждого участника нашего сообщества.

    хотелось сказать, но думаю , не достаточно правильно смогу сформулировать свою мысль ….

    — самый ДОРОГОЙ это первый ПЛЮС и самый горький это первый МИНУС

    (но полюбому это ОПЫТ набранный тобой, ты учишся, ты начинаешь понимать, вникать, перенимать азы общения )

    знаешь анекдот:

    Вовочка папе:

    — пап, мы сегодня кружочки в классе рисовали, и у меня

    лучше всех получился. Это потому, что я сын нового русского ?

    — да, сынок !

    — пап, а на переменке с мальчишками в туалете ….письками мерялись, это потому что я сын нового русского ?

    — да, сынок и не только, ведь тебе уже 22 годика.

    А мерять плюсами людей — это в корне НЕПРАВИЛЬНО , а тебе по твоей же ОЦЕНКЕ — нарушаешь суббординацию. Было бы у тебя плюсов больше, чем у Noy вот тогда бы и сравнивал. Надеюсь ты меня услышал.

    Reply
  28. larisab
    самый ДОРОГОЙ это первый ПЛЮС

    Мой!

    Я бы сто плюсов поставила за это:

    этот программа на макросах была написана » в окопе, на сапоге убитого командира..» во время бурной молодости и славной службы в ВС РФ.

    😀 😀 😀

    Reply
  29. msadu

    Вопрос похожий но не совсем Можеть кто поможет:

    нужно также Из 1С записать состояние группы: «Разгруппировать»

    VBA выглядеть так :

    ActiveSheet.Outline.ShowLevels RowLevels:=0, ColumnLevels:=1

    Reply
  30. Tatitutu

    (29) не вопрос. Подожди минут 20 напишу прямо здесь . Обед сейчас (война — войной, а обед по распорядку (с))

    Reply
  31. msadu

    продолжение [29]

    ф=Ексель.Range(Область).Select;

    ф=Ексель.Selection.Columns.Group;

    а В Ексель итак-то оказывается группа откроется раскрытым, мне наоборот надо закрыть группу при открытии

    Reply
  32. Tatitutu

    я добавил к статье пример задачи (ЗАДАЧА №1 и ответ к ней, но он под паролем ) специально для поста (25)

    Reply
  33. Noy

    (32) Ты же сам плюсанул пост (26), а теперь начинаешь мерятся?

    Прям как дети малые.

    Reply
  34. Tatitutu

    (33) 😮 нет я не мерится собрался, вернее даже и не собирался. А как порядочный преподователь к статье — выложил «домашнее» задание.

    Reply
  35. Трактор

    (32) Задача мне неинтересна. Как и процесс мерянья плюсами. А вот люди, меряющиеся интересны 🙂

    Пошёл за кукурузой.

    Reply
  36. Noy

    (35) Бери на всех 😀

    Reply
  37. levran

    «+»

    Reply
  38. Tatitutu

    (35) Извини, (33) исправил шапку — согласен так будет лучше…пообедал жизнь наладилась 😀

    Reply
  39. Tatitutu

    (29) смотри личку.

    Reply
  40. msadu

    спасибо большое, все ОК. Второй плюс не получается извени брат. Тебе буду знать знатока по 1С+Excel. Удачи тебе ВО ВСЕМ!

    Reply
  41. Tatitutu

    (40) я очень рад , что тебе это помогло ! Спасибо за комплимент и не нужно извинений.

    я напишу тут ответ на твой вопрос.

    вот строка кода которая сделает все группировки при открытии документа «Закрытыми» см. задачу в (29) и (31)

    Ехсел.ActiveSheet.Outline.ShowLevels(1,1);

    Метод Outline

    ShowLevels(,)

    Синтаксис:

    ShowLevels(RowLevels, ColumnLevels)

    Параметры:

    <RowLevels> — VT_VARIANT

    <ColumnLevels> — VT_VARIANT

    Reply
  42. Трактор

    Меня всегда терзают сомнения стоит ли публиковать что-то. Эта публикация подтолкнула опубликовать своё знание, столь же очевидное мне, но, возможно, новое для других. http://infostart.ru/public/62030/

    Однако сомнения остались. Не превратится ли Инфостарт в мусорку для специалистов? Ведь и эта публикация и моя довольно очевидны…

    Reply
  43. Tatitutu

    (43) Я тебе ответил , там куда ты послал.

    «Немножко души и из под клавиш польется музыка…,а не голые ноты»

    Reply
  44. gaglo

    (4) и (7) заодно: Не корысти ради, а токмо волею пославшей…

    — не LocalFormula, а FormulaLocal;

    — если нет планов по распространению за границы, то (лучше?) быстрее писать в родной локали, ибо не придется так нудно выяснять, что СЦЕПИТЬ шифруется как CONCATENATE;

    — и если кому-то вдруг да придется разбираться со множеством формул, так для перевода локализованных названий функций в оригинальные существует прямо от авторов Екселя секретная книга FUNCS.XLS, спрятанная где-то в недрах типа «X:Program FilesMicrosoft OfficeOffice121049FUNCS.XLS», и там все-все имена расписаны: откроешь её, и сразу можно узнать, что ОКРУГЛТ — это MROUND и тому подобное

    ;

    Reply
  45. Tatitutu

    +(44) Program FilesMicrosoft OfficeOFFICE111049 — для 2003 Офиса

    852 — функции

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

    Reply
  46. ilp06

    (44)

    если нет планов по распространению за границы

    для этого совсем необязательно куда-либо за рубеж выезжать.

    достаточно чтобы сервер стоял не русский, а ваш код выполнился на сервере. или офис был не русский. частая ситуация.

    а ещё проблемы с переносом кода в оупен-офис.

    Reply
  47. DarkAn

    Автор молодец! Сам пользуюсь таким же способом 😀

    Так же хочу заметить, что Excel часто использует свои встроенные константы, которые имеют числовой тип и порой бывает интересно, а чему равна та или иная переменная, например:


    Range(«E4»).Select

    With Selection

    .HorizontalAlignment = xlGeneral

    .VerticalAlignment = xlCenter

    .WrapText = False

    .Orientation = 0

    .AddIndent = False

    .IndentLevel = 0

    .ShrinkToFit = False

    .ReadingOrder = xlContext

    .MergeCells = False

    End With

    Показать

    и так часто пишет конструктор макросов, так вот чтоб узнать чему равны

    «xlGeneral», «xlCenter» и «xlContext»

    достаточно в том же макросе VBA написать

    msgbox(xlGeneral), msgbox(xlCenter) или msgbox(xlContext)

    и выполнить этот макрос в excel перед вами появиться окно в котором будет написано значение этой константы.

    Если кому интересно в моей обработке я формирую бланк табеля Т-13 в Еxcel из , http://infostart.ru/public/19759/ , в данной обработке можно увидеть как в Excel создаются и рисуются таблицы, как формируются списки для выбора элемента, как описывается «условное форматирование», а так же имеется БОЛЬШОЙ список внутренних констант (за который надо благодарить не меня, а др. человека, увидел в чужой обработке и взял на вооружение) и все это в Excel из

    Reply
  48. larisab
    Ведь и эта публикация и моя довольно очевидны…

    Да уж, очевидны… попробовала я проделать все это в екселе 2007, ужос… ничего не получается, не дает той строчки

    ActiveCell.FormulaR1C1 = «=CONCATENATE(RC[2],R[6]C)»

    Range(«C2»).Select

    только первые две.

    Каким то чудом открылась справка-расчет. В маленьком окошке. Куча листов, смотреть тяжко, так как они еще как то свернуты, видны только шапки. Стало страшно. По моему, это освоить так просто слету невозможно.

    Надо искать книжки. Посоветуйте.

    Reply
  49. Noy

    (47) Константы проще смотреть в редакторе ВБА — просто жмешь F2, там поиск…

    Reply
  50. gaglo

    (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 тоже установили.

    Reply
  51. maloi_a

    Позвольте и мне сделать несколько замечаний.

    1. В 1С процедуру необходимо добавить оператор:

    Перем Ехсел,Книга;

    2. Ехсел.Range(«C1»).FormulaR1C1 = «=CONCATENATE(RC[2],R[6]C)»;

    я бы поменял на

    Ехсел.Range(«C1»).FormulaR1C1 = «=RC[2] & R[6]C»;

    Reply
  52. gaglo

    (48) Антон Орлов — «VBA для тех, кто любит думать». Очень доступно внедряет в сознание читателя идейные основы VBA, правда, изложено почти все на примере WORD, но он же от EXCEL отличается только объектной моделью. А для начала — самое то. ИМХО.

    Если прочесть и понять, то можно будет легко выбрать себе вторую книгу, уже специально по EXCEL — просмотрев страниц с десяток. Ну или решить, что никакой больше книги по VBA уже и не надо.

    Reply
  53. Tatitutu

    так не взлетит:

    Ехсел.Range(«C1»).FormulaR1C1 = «=RC[2] & R[6]C»;

    будет ругаться на лишние пробелы

    Ехсел.Range(«C1»).FormulaR1C1 = «=RC[2]&R[6]C»;

    тоже как вариант (но именно этой функции)

    Reply
  54. JohnyDeath

    (47), (49) а я себе вот такую функцию в глобальник (точнее в класс) запихал и забыл. Чего и всем советую.

    Reply
  55. ZERO_

    (45)

    852 — функции

    Ну, если быть точным, то 851. 😀

    Reply
  56. maloi_a

    (53) Извиняюсь, Вы не правы.

    Хоть «=RC[2] & R[6]C»;

    хоть «=RC[2]&R[6]C»;

    хоть «=RC[2]& R[6]C»; и «=RC[2]& R[6]C»;

    проходит без проблем.

    Reply
  57. ZERO_

    (46)

    а ещё проблемы с переносом кода в оупен-офис.

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

    (48)

    Надо искать книжки. Посоветуйте.

    Лично мне понравилось скрещивать 1с с другими системами, всвязи с этим пригодилась книга А.Михайлова «1С предприятие системное программирование».

    Reply
  58. an77

    Всем, кому интересна работа с Excel, советую

    http://planetaexcel.ru/index.php

    лучший русскоязычный сайт по теме Excel

    Reply
  59. slige

    Огромный «+«, надо бывает, но очень трудно найти 💡

    Reply
  60. Tatitutu

    Вот еще очень хороший и поучительный раздел по работе с Макросами

    http://msoffice.nm.ru/faq/macros.htm

    Reply
  61. Tatitutu

    Описание русском языке Лист рабочей книги Excel

    объекты и метоты

    http://cadmium.ru/content/view/1157/46/

    Reply
  62. annak2980

    Большое количество плюсов говорит еще о том, что статья написана грамотно и понятно, с иллюстрациями и активными комментариями и рекомендациями автора онлайн.

    Reply
  63. Squared

    Молодец, полезная информация… 😉

    Reply
  64. gerasimovaol@rambler.ru

    Здравствуйте!

    А как сделать файл Excel с группировками.Задача такова:

    отчет для экономистов по затратам-укрупненным , расшифрованным бухгалтерскими. Как бы в excel передать группировку строк.

    Если подскажете, то спасибо заранее!

    Reply
  65. Душелов

    (65) Сформировать в 1С печатную форму с группировкой строк и сохранить ее в формате xls

    Reply
  66. Tatitutu

    (65) Я думаю речь и идет немного о другом (пример на картинке)

    могу Вам предложить два варианта :

    1. Сразу формируете файл Excel

    (не универсально под каждый отчет нужно делать)

    2. Обычным спосом формируете отчет в 1С

    (но нужен будет файл с макросом в личной книге)

    в отчете на нужных группировках делаете скрытую метку

    а при открытии макрос обрабатывает согласно правилам ,удаляет метки и сохраняет. Все предельно просто.

    Reply
  67. SiAl

    Советую что-нибудь аналогичное по OpenCalc написать.

    Reply
  68. AntonDr

    у меня без Книга.Save() не заработало

    Reply
  69. Alex_Alex

    Здравствуйте!

    У меня проблема такая: Формулы в ячейку записываются, но вычисляются только после того, как 2 раза кликну на ячейке и нажму Enter. Подскажите, пжста, как решить.

    Reply
  70. krunm

    (70) Добрый день, тоже столкнулся с подобной проблемой, у Вас решилось?

    Reply
  71. anri99

    Полезная статья. Добавлю еще пример программного создания макроса в Excel из 1С

    xl=CreateObject(«Excel.Application»);

    wb=xl.Workbooks.Add();

    xl.VBE.ActiveVBProject.VBComponents(1).CodeModule.AddFromString(«public sub Hello» +

    РазделительСтрок+ «MsgBox(«»Hello World!»»)» + РазделительСтрок + «end sub»);

    wb.SaveAs(«Test.xls»);

    xl.run(«ЭтаКнига.Hello»);

    wb.Close();

    xl.quit();

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *