Excel — основные методы и конструкции языка, подключение через COM — соединение (1С: v8 и v7: Программисту: Язык программирования) — 1c-h
 

Excel — основные методы и конструкции языка, подключение через COM — соединение (1С: v8 и v7: Программисту: Язык программирования)

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (2 оценок, среднее: 5,00 из 5)
Загрузка...

Как осуществить чтение/запись данных из/в Excel на языке 1с (используя COM-объект)

Здесь можно скачать шаблонную обработку, разработанную в среде «1С:Предприятие v8″ для работы с файлами Excel: [download id=»5»] В обработке осуществляются все основные действия с файлом Excel. Даны подробные комментарии. Можно использовать в качестве шаблона для разработки собственных выгрузок/загрузок в/из Excel.

Основные методы, принципы и хитрости, используемые при работе с EXCEL через COM-объект

Чтение данных из Excel

Доступ из 1С к Excel производится посредством OLE. Создание COM-объекта:

Теперь используя переменную Эксель можно управлять приложением Excel.

  • Внимание! Microsoft Excel должен быть установлен на компьютере!

Следующая команда откроет книгу:

Перед тем, как начать считывание данных, укажем лист книги, с которого будем считывать данные:

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

Лист можно выбрать по имени листа в книге:

Имя листа в книге можно получить по номеру:

Точно так же можно задать имя листа:

Итак, мы открыли книгу и выбрали лист, теперь посмотрим, сколько строк и колонок на выбранном листе:

Получим значения ячейки листа в строке НомерСтроки и в колонке НомерКолонки:

Ниже приведен отрывок кода, запустив который мы прочитаем все данные с первой страницы:

Где ПутьКФайлу — полный путь к файлу книги Excel (включая имя).

После выполнения действий необходимо закрыть книгу:

Выгрузка данных в Excel

Для вывода (выгрузки) данных в Excel необходимо либо открыть существующую книгу, либо создать новую, и выбрать рабочий лист для вывода данных.
Для создания новой книги можно использовать следующий код:

При создании книги автоматически создаются листы (по умолчанию 3). Нам остается только выбрать нужный:

Или добавить в книгу новый лист:

Добавим в ячейку на листе значение:

Запишем книгу:

Где ПутьКФайлу — полный путь к файлу книги Excel (включая имя).

После выполнения действий необходимо закрыть книгу:

Как программно сохранить файл Excel в формате 2003 года

Синтаксис команды «SaveAs» во втором параметре разрешает указать формат сохраняемого файла.
Числовое значение фрмата файла Excel 2003: FileFormatNum = -4143
Т.е. команду сохранения для этого можно написатьтак:

Часто используемые методы Excel

Эксель.Visible = Видимость;0 — Excel не виден, 1 — виден.
Книга = Эксель.WorkBooks.Add();Создание новой книги (файла) Excel.
Книга = Эксель.WorkBooks.Add(ИмяФайлаШаблона);Создание новой книги (файла) Excel по шаблону «ИмяФайлаШаблона»
Книга.SaveAs(ИмяФайла);Сохранение книги Excel.
Лист = Книга.WorkSheets.Add();Добавление нового листа в книгу.
Книга = Эксель.WorkBooks.Open(ИмяФайла);Открытие существующей книги (файла) Excel.
Лист = Книга.WorkSheets(НомерЛиста);Установка листа в качестве рабочего с номером НомерЛиста.
Лист.Name = ИмяЛиста;Задание рабочему листу имени ИмяЛиста
Лист.PageSetup.Zoom = Масштаб;Задание параметра страницы «Масштаб» (от 10 до 400).
Лист.PageSetup.Orientation = Ориентация;Ориентация: 1 — книжная, 2 — альбомная.
Лист.PageSetup.LeftMargin = Эксель.CentimetersToPoints(Сантиметры);Задание левой границы (в сантиметрах).
Лист.PageSetup.TopMargin = Эксель.CentimetersToPoints(Сантиметры);Задание верхней границы (в сантиметрах).
Лист.PageSetup.RightMargin = Эксель.CentimetersToPoints(Сантиметры);Задание правой границы (в сантиметрах).
Лист.PageSetup.BottomMargin = Эксель.CentimetersToPoints(Сантиметры);Задание нижней границы (в сантиметрах).
Лист.Columns(НомерКолонки).ColumnWidth = Ширина;Задание ширины колонке.
Лист.Cells(НомерСтроки,НомерКолонки).ColumnWidth = 0;Скрыть всю колонку, в которой расположена ячейка
Лист.Cells(НомерСтроки, НомерКолонки).Value = Значение;Ввод данных в ячейку.
Лист.Cells(НомерСтроки,НомерКолонки).Font.Name = ИмяШрифта;Установка шрифта в ячейке.
Лист.Cells(НомерСтроки,НомерКолонки).Font.Color = ЦветШрифта;Установка цвета шрифта в ячейке. Тип переменной ЦветШрифта — число десятичное.
Лист.Cells(НомерСтроки,НомерКолонки).Borders.Color = ЦветРамки;Установка цвета рамки в ячейке.
Лист.Cells(НомерСтроки,НомерКолонки).Interior.Color = ЦветФона;Установка цвета фона в ячейке.
Лист.Cells(НомерСтроки,НомерКолонки).Font.Size = РазмерШрифта;Установка размера шрифта в ячейке.
Лист.Cells(НомерСтроки,НомерКолонки).Font.Bold = Жирный;1 — жирный шрифт, 0 — нормальный.
Лист.Cells(НомерСтроки,НомерКолонки).Font.Italic = Курсив;1 — наклонный шрифт, 0 — нормальный.
Лист.Cells(НомерСтроки,НомерКолонки).Font.Underline = Подчеркнутый;2 — подчеркнутый, 1 — нет.
Лист.Cells(НомерСтроки, НомерКолонки).NumberFormat = Формат;Установка формата данных ячейки.
Лист.Cells(НомерСтроки,НомерКолонки).Borders.Linestyle = ТипЛинии;Установка рамок ячейки. 1 — тонкая сплошная.
Лист.Cells(НомерСтроки,НомерКолонки).WrapText = Истина;Осуществлять перенос по словам в указанной ячейке
Лист.Protect();Установка защиты на лист
Лист.UnProtect();Снятие защиты с листа
Лист.Cells(Строка, Столбец).Locked=0;Ячейка будет доступной (и после установки защиты на лист)
ПолучитьCOMОбъект(<Имя файла>, <Имя класса COM>);Основное применение функции ПолучитьCOMОбъект — это получение COM-объекта, соответствующего файлу.

Хитрости Excel

Как выборочно разрешить / запретить редактирование ячеек листа

Как запретить появление на экране всяких вопросов от Excel

Excel, чтоб вопрос не задавал:

Как добавить лист Excel в конец списка листов книги или после конкретного листа (а не в начало книги)

Метод работает для платформ 1С v8.

 

Как программно скрыть колонку файла Excel

Как программно назначить ячейке файла Excel перенос по словам

Как обработать файл xls, если Excel не установлен на компьютере

Для этого можно использовать метод

Код для 7.7, решающий такую задачу, будет выглядеть примерно так:

Как указать цвет шрифта в ячейке, цвет рамки, цвет фона

Организация автоматической обработки файлов xls из выбранной папки

Создание кнопки в Excel в 7.7

Процедура открывает Эксель, втавляет на первый лист кнопку «Очистить» и назначает ей макрос,
устанавливающий автофильтр на колонку Е по не нулевым значениям. Текст макроса любой,
главное разделять Симв(13) строки

текст макроса пишется в переменную st

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

При этом первый параметр нужно оставить пустым. В этом случае при этом подцепится тот файл экселя, который был открыт последним, даже если порядок переключения окон был таким:
Excel1, Excel2, IE, Проводник, 1С (т.е. что-то и было открытым между 1с и экселевским файлом) — все равно откроется Excel2, потому что он был активен последним.

Описание команды ПолучитьCOMОбъект

Глобальный контекст
ПолучитьCOMОбъект (GetCOMObject)
Синтаксис:
ПолучитьCOMОбъект(<Имя файла>, <Имя класса COM>)
Параметры:
<Имя файла> (необязательный)
Тип: Строка. Имя файла, включающее полный путь.
<Имя класса COM> (необязательный)
Тип: Строка. Имя класса COM, экземпляр которого должен быть создан или получен. Если расширение имени файла, указанное в первом параметре полностью идентифицирует класс объекта, то параметр может быть опущен.
Возвращаемое значение:
Тип: COMОбъект.
Описание:
Основное применение функции ПолучитьCOMОбъект — это получение COM-объекта, соответствующего файлу. Для этого следует в качестве первого параметра функции задать имя файла, который будет определять COM-объект. Например, фрагмент кода

создает объект Excel.Application и открывает с его помощью файл документа «C:DATADATA.XLS». Если указанный файл во время выполнения данного фрагмента уже открыт с помощью MS Excel, то будет получена ссылка на уже существующий объект.
Для файлов, указываемых в качестве параметра данной функции, должно быть установлено соответствие расширения имени файла и класса COM.
Если в качестве имени файла указана пустая строка, то будет создан новый экземпляр объекта. В этом случае необходимо указать имя класса COM.
Например, фрагмент кода

создает новый документ Excel. В дальнейшем этот документ может быть программно заполнен и сохранен в файл.
Если первый параметр функции пропущен, то будет произведена попытка получить активный объект указанного типа. Если активного объекта указанного типа в настоящий момент не существует, то будет вызвано исключение. Например, в результате выполнения оператора

Переменная П получит значение типа COMОбъект, соответствующее активному приложению MS Excel, если таковое имелось, или будет вызвано исключение, если активных экземпляров MS Excel не было.
Пример:

Ниже приведена сравнительная таблица команд — один и тот же код на 7.7 и v8 с небольшими дополнениями

Отличия:

  • команда создания самого объекта в 7.7 и v8 различна;
  • в v8 выводится запись в журнал регистрации (просто для примера, например, когда вывод сообщения на экран невозможен из-за выполнения кода в фоновом задании);
  • в v8 параллельно создается, заполняется и сохраняется копия исходного файла с комментариями об ошибках
1C 7.71C v8
Доступ из 1С к Excel производится посредством OLE. Создание COM-объекта:
Теперь, используя переменную «Эксель», можно управлять приложением Excel.
* Внимание! Microsoft Excel должен быть установлен на компьютере!
Следующая команда откроет книгу:
Перед тем, как начать считывание данных, укажем лист книги, с которого будем считывать данные:
Нумерация листов книги начинается с 1. Общее количество листов можно получить, используя следующую команду:
// создание файла для записи проблем
// читаем книгу по листам:
//Имя листа в книге можно получить по номеру:
//Лист можно выбрать по имени листа в книге:
//Итак, мы открыли книгу и выбрали лист, теперь посмотрим, сколько строк и колонок на выбранном листе:
// получение значения из конкретной ячейки файла экселя:
// установка нового значения ячейки экселя:
// сохранение изменений в новом файле экселя:
// После выполнения действий закрываем книгу:
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (2 оценок, среднее: 5,00 из 5)
Загрузка...

Автор 1С

100 thoughts on “Excel — основные методы и конструкции языка, подключение через COM — соединение (1С: v8 и v7: Программисту: Язык программирования)

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

  2. Я думаю, не будет лишним 🙂

    Книга = Эксель.WorkBooks.Add(ИмяФайлаШаблона);

    если есть необходимость создания файла по шаблону

  3. Подскажите, пожалуйста, можно ли в 8.1 подцепить открытый Excel-евский файл? Чтобы в реальном времени изменить в Excel, и не загружая его в 1с, а лишь переключить окно, выгрузить данные из него? Заранее, спасибо.

  4. Ильдар, команда

    Excel.WorkBooks.Open(ИмяФЗагрузки)

    срабатывает и при открытом файле Excel. Важно, чтобы на момент исполнения этой команды открытия из 1С, файл содержал уже те данные, которые нужны, т.е. файл на этот момент уже должен быть изменен.

    Т.е. порядок такой: открыли файл из Windows, отредактировали, сохранили его (можно не закрывая), переключились на 1С, прочитали файл.

  5. Спасибо, но уже нашел проще вариант, может пригодится кому:

    Excel = ПолучитьCOMОбъект(, «Excel.Application»)

    Если первый параметр оставить пустым (а там указывается путь к файлу), то он цепляет запущенный Excel-евский файл. При этом можно в реальном времени изменить его и даже не сохранять, а просто перключить окно на 1С.
    Удобно, когда нужно делать исправления в экселе и сразу же выгружать данные в табличную часть, лишь перключив окна.

  6. Подцепиться тот, что был открыт последним.
    Даже если порядок переключения окон был таким:

    Excel1, Excel2, IE, Проводник, 1С (т.е. что-то и было открытым между 1с и экселевским файлом), то все равно откроется Excel2, потому что он был активен последним.

  7. Здравствуйте, а как насчет загрузки в 7.7 из .xls файла без установленного экселя? Может у кого то есть подходящий пример? Спасибо.

    1. Метод СоздатьОбъект(«Excel.Application») не поможет, если запускать исполнение на рабочей станции, на которой Эксель не установлен.

      Быть может, все же есть компютер, на котором он установлен? Можно попробовать вызывать исполнение модуля дистанционно, на том компьютере, где эксель установлен.

      Еще, как вариант, быть может сначала попробовать преобразовывать формат в txt или xml и работать уже с преобразованным файлом.

      Или можно использовать не СоздатьОбъект(«Excel.Application»), а СоздатьОбъект(«ADODB.Connection») — пример см. http://www.1c-h.ru/?p=1154

  8. Спасибо, я уже разобралась:

    1. Примерно вот так (сами цвета взяты «с потолка»);

      Книга.Sheets(1) — это первый лист, Cells(1,1) — это ячейка на пересечении первой строки, первой колонки соответственно.

  9. Спасибо. Нашел ещё такое решение:

    Индекс цвета вроде бы, если больше 56 — выдает ошибку. Надо попробовать Color. Кстати, в чем принципиальная разница между Color и ColorIndex?

  10. ColorIndex, если больше 56, выдает ошибку, потому что в Excel 2003 56 предопределенных цветов.
    И спасибо за интересные вопросы 🙂

  11. Добрый день!
    Очень полезная статья!
    Есть такая задача — выгрузить в Excel 40 000 строк. С помощью указанного примера это будет долго, потому что форматирование каждой ячейки выполняется не быстро.
    Есть мысль попробовать сначала выгрузить в текст, а потом этот текст «поднять» в Excel. Должно быть гораздо быстрее.
    Что посоветуете?

    1. Спасибо!
      Да, возможно, так быстрее. Как вариант, можно попробовать сформировать табличный документ (в формате 1С — «mxl»), а его уже сохранить как «xls» через буфер обмена, т.е. вручную.

  12. А можно ли не устанавливать excel на сервер, а скопировать какие-либо его компоненты, а то сервак совсем загружен. Тем более сохранение будет на сетевой диск?

    1. Александр, можно вообще не устанавливать эксель. Чуть выше об этом писала Ольга — см. запись в комментариях от 14 02 2011

  13. Здравствуйте!
    Спасибо за статью, оказалась очень полезной!!!
    И подскажите, если сможете:
    Я передаю данные из 1С в Эксель, и сохраняю файл.
    Если использовать формат сохранения «*.xlsx», то этот файл открывается нормально, после сохранения при открытии.
    А если использовать формат офиса до 2003 года «*.xls», то после сохранения, при открытии этого файла Экселем, мне выдается предупреждение «Действительный формат открываемого файла (1.xls) отличается от указываемого его расширением имени файла…Открыть этот файл сейчас». Варианты — да, нет, справка. Если выбираю «да», то открывает его нормально.
    Мне нужен формат сохранения «*.xls», можно ли обойтись без этого предупреждения?

    Сохраняю: «Книга.SaveAs(ПутьДляЗаписиФайла);», где ПутьДляЗаписиФайла — переменная типа «Строка», со значением например «C:1.xls»

  14. Здравствуйте! не подскажите такую вещь: как запретить выделение заблокированных ячеек? пример моего кода:
    Книга = Эксель.WorkBooks.Open(ПутьКФайлу);
    Книга.ActiveSheet.Protect();
    //Книга.ActiveSheet.EnableSelection = xlUnlockedCells;
    Эксель.ActiveWorkBook.Save();
    Эксель.Quit();
    Платформа: 8.1

  15. хм. странное дело: в 2007 экселе открываю созданный документ, запрет на выделение заблокированных ячеек стоит после

    . Однако когда пользуюсь 2003 екселем Запрет исчезает, но защита остается… а нужно в 2003!

  16. Здравствуйте! Передо мной стоит такая задача: обеспечить перенос информации о товаре из книги Excel в 1С v8.1 с созданием карточек в справочнике ТМЦ. При этом данные каждой записи на листе Excel должны помещаться в соответствующие поля карточки в 1С. Причём очень желательно, чтобы перед созданием новой карточки производилась бы проверка на наличие таковой в справочнике ТМЦ по какому-либо идентификационному коду (например, штрих-коду товара), и, если таковая уже существует, то запись игнорироуется (пропускается). Задача актуальна для множества пользователей, поэтому смею надеяться, что такая процедура существует в природе… Вы не в курсе, есть ли она? Очень хотелось бы её заполучить каким-либо способом… Заранее благодарю за ответ.

    1. Добрый день, Анатолий. На диске ИТС есть универсальная обработка выгрузки/загрузки из Excel, поищите там. Можно попробовать приспособить ее.
      И к этой статье приложена обработка — заготовка. Можно попробовать использовать для своих доработок ее.
      «Опознание» номенклатуры по данным файла Excel в каждом случае свое, написать что-то более универсальное пока не довелось.

    1. Можно разными способами. Например, трудоемкий: задать область R1C1:RxxxCyyy и всю ее очистить. Предварительно вычислив xxx и yyy как последние непустые ячейки (перебирая все ячейки).

      Другой способ — удалить лист и тут же создать с таким же именем.

      Третий (если нужно очистить только содержимое, сохранив формат):
      Лист.UsedRange.ClearContents();

      Если включая формат: Лист.UsedRange.Clear();

      Или так:
      Диапазон=Лист.Cells;
      Диапазон.Delete();

    1. Алексей, вот этой командой:
      Лист.Cells(НомерСтроки, НомерКолонки).Value = Значение;
      где «Значение» — это то, что нужно записать в ячейку.

  17. Что-то
    «Excel.Range(Excel.Cells(Строчка,1), Excel.Cells(Строчка, 3)).Select; // выделение области первых трех ячеек текущей строки
    Excel.Selection.Interior.ColorIndex = 37;» — ошибку пишет: Неопознанный оператор
    ApplicationExcel.Range(ApplicationExcel.Cells(i,2), ApplicationExcel.Cells(i, 3)).Select<>;

    Неопознанный оператор
    ApplicationExcel.Range(ApplicationExcel.Cells(i,2), ApplicationExcel.Cells(i, 3)).Selection<>;
    Хотела выделить 2 ячейки и установить рамку ячейки

  18. Подскажите, почему может быть ошибка «Не установлен Excel» в 1с:8? все находится на сервере, и эксел тоже установлен!!!

    1. Быть может, это связано с тем, что установлена не та версия. Например, сервер 64-разрядный, а установлена 32-битная версия.

      Вот сюда еще гляньте, может, окажется полезным http://www.1c-h.ru/?p=77

  19. Здравстуйте! Столкнулся с небольшой проблемкой. Буду признателен за помощь. Суть в следующем: загружаю в документ данные из Экселя используя таблицу значений. Как данные из одной ячейки, разделённые на строки, закинуть в разные ячейки тблицы значений?

    1. Здравствуйте!
      Главное — выяснить, что за символ используется в качестве разделителя строк (можно смотреть в отладчике). Затем можно разделить содержимое ячейки на подстроки, используя команды 1С: СтрДлина(), Лев(), Прав(), Сред() по этому признаку и поместить их уже по отдельности в графы таблицы значений. Но количество граф при таком подходе заранее будет неизвестно, можно давать им наименования типа «Графа» + Сч, где Сч — номер очередной подстроки, выделенной по разделителю.

  20. На выходе 1С получаем файл формата xls, но внутри цифры не суммируются, а суммируются только строки.
    Вносим в любые ячейки цифры — они суммируются нормально, а вот то что экспортировали — нет

  21. Всем привет! Есть задача из файла эксель загружать номенклатуру с картинками, вопрос в том — как загружать картинки? есть идея, сохранить файл как хтмл и в появившейся папке брать картинки…

    1. Привет! Можно использовать внешнюю компоненту cClipBoardObject.dll, она ловит картинку в буфере обмена и сохраняет ее в файл формата *.wmf,*.bmp,*.jpg.

      Или можно попробовать с помощью команд, т.е. копировать можно и без этой дээлельки:

      ЭлементыФормы.Добавить(Тип(«ПолеHTMLДокумента»), «ПолеHTMLДокумента», Ложь);
      Окно = ЭлементыФормы.ПолеHTMLДокумента.Документ.ParentWindow;
      Окно.ClipboardData.SetData(«Text», ТекстПисьма);
      ЭлементыФормы.Удалить(ЭлементыФормы.Индекс(ЭлементыФормы.Найти(«ПолеHTMLДокумента»)));

      вставить из буфера

      ЭлементыФормы.Добавить(Тип(«ПолеHTMLДокумента»), «ПолеHTMLДокумента», Ложь);
      Окно = ЭлементыФормы.ПолеHTMLДокумента.Документ.ParentWindow;
      СодержимоеБуфера = Окно.ClipboardData.GetData(«Text»);
      ЭлементыФормы.Удалить(ЭлементыФормы.Индекс(ЭлементыФормы.Найти(«ПолеHTMLДокумента»)));
      ТекстПисьма = ТекстПисьма + СодержимоеБуфера;

  22. Доброго времени суток!
    У меня есть обработка с 2-мя макетами Excel. Эти макеты должны сохранятся в разные файлы. Подскажите, пожалуйста, как это реализовать.
    У меня только получается сохранить первый макет, а потом выходит ошибка: Произошла исключительная ситуация (0x800a03ec)

  23. Подскажите пожалуйста,как исправить данную ошибку {Обработка.ЗагрузкаExcel.Форма.Форма.Форма(90,3)}: Переменная не определена (ЭлементыФормы)
    <>ЭлементыФормы.ТаблицаТоваров.Значение = ТаблицаТоваров; (Проверка: Тонкий клиент)

  24. Здравствуйте, подскажите пожалуйста, как исправить данную ошибку:{Обработка.ЗагрузкаExcel.Форма.Форма.Форма(90,3)}: Переменная не определена (ЭлементыФормы)
    <>ЭлементыФормы.ТаблицаТоваров.Значение = ТаблицаТоваров; (Проверка: Тонкий клиент)

    1. Видимо эта команда выполняется в модуле, где не доступен метод «ЭлементыФормы». Из какого модуля вызывается строка? Модуль чего? Объекта?

  25. Не могу понять как мне выделить ОБЛАСТЬ ячеек на одном листе, СКОПИРОВАТЬ и ВСТАВИТЬ ее. Как сделать откуда и куда я знаю.
    1. Какой командой ВЫДЕЛИТЬ ОБЛАСТЬ?
    2. Какаой командой СКОПИРОВАТЬ?
    3. Какой командой ВСТАВИТЬ ОБЛАСТЬ? ( ну тут примерно я сно это тоже что и скопировать только insert вместо copy в конце).

  26. Подскажите пожалуйста как выделить кодом область на странице, и сделать копирование этой области а потом вставку. Мне нужно выделить КвадратПрямоугольник по ячейкам. Поиск по тексту области не подходит.

    1. Добрый день, подскажите как работать с объединёнными ячейками Excel 2003 при программном обращении к ним выдаёт ошибку

  27. Здраствуйте. Столкнулся с такой неувязкой. У меня листы в книге первые имеют цифровое название, последний буквенное. Индексы листам эксель назначает: 1 для листа с буквенным обозначением, 2,3,4..для листов с цифровым обозначением по порядку их следования в книге. Является ли это общим принципом.

  28. Очень полезная инфа , а можно еще примерчик как работать с картинками в экселе , особенно интересует на примере 2003 екселя . в 2007 у меня вот такой вот код отрабатывался без проблем , а в 2003 не хотит работать
    код

    даже не заходит в цикл

  29. Может кому понадобиться.
    Как записать цифры в формат текста

    Перед присвоением значения «001», устанавливаем формат ячейки:

    Лист.Cells(НомерСтроки, НомерКолонки).NumberFormat = «@»;
    Лист.Cells(НомерСтроки, НомерКолонки).Value = «001»

  30. Здравствуйте1. Делаю загрузку данных в ексел и периодически 1с выпадает с ошибками времени выполнения на строчках

    или

    с чем это может быть связанно??

  31. Лист.Cells(НомерСтроки, НомерКолонки).NumberFormat = Формат;
    Каким должно быть значение Формат, чтобы установить Процентный формат ячейки?

  32. Доступом к файлам Excel подобным способом надо пользоваться лишь в крайнем случае — Excel при запуске жрет кучу процессорной мощности, и может зависать. Доступ по ADO гораздо быстрее и надежнее.

  33. Очень полезная информация. Однако ни слова о переносе дат из Екселя в 1С. В 1С сегодняшняя дата будет выглядеть примерно 41256. Просто целое число… (это на самом деле и есть число, и неважно, как оно выглядит в самом Ексель).

  34. У меня есть некая таблица в excel разделённая на области, в каждой области находится своя картинка. Я хочу загрузить каждую картинку в отдельный элемент справочника. Как найти нужную мне область я уже разобрался. Подскажите пожалуйста, а как получить картинку находящуюся именно в этой области?

  35. Добрый день.Подскажите,как при выгрузке из 1С 7.7 платежной ведомости для банка установитьв файле Excel разделитель для сумм точку вместо запятой?

  36. Огромная благодарность!
    Не столкнувшись ни разу с загрузкой/выгрузкой в Excel до этого момента, в ходе чтения статьи писался код и в течение 10 минут поставленная задача была решена.

  37. Не уверен, жива ли ветка форума. Но все же спрошу. Сам пишу на 7.7 и пока общение с моих программ с Экселем сводилось к банальному сохранению отчета в формате xls. Появилась необходимость выгружать данные из абон.отдела в ГИС ЖКХ. Посмотрел-почитал ихнюю процедуру обмена данными. Принцип заполнения ГИС сводится к загрузке/выгрузке файлов-шаблонов Экселя и заполнения своими данными. К примеру, на одном листе указывается информация по дому: адрес, этажность, площади и т.д. На другом листе в ячейке дома уже выбираю нужный дом, в соседней ячейке выбираю (из предлагаемых перечисляемых значений) нужный параметр, и рядышком указываю его значение (в формате строки, числа, даты и т.д.). Скажем, кол-во лифтов: 2, год ввода в эксплуатацию: 1980 и т.д. Может кто подскажет как работать со связанными ячейками на листах (там — указал, а там — выбрал), и как в ячейке с перечисляемым типом выбрать нужный?
    Кстати разработчики ГИС запрещают что-либо модифицировать в макросах, защитах и пр. в файле-шаблоне.

    1. Михаил, Вы уже разобрались с этим?
      Места ячеек с информацией фиксированные, не меняется от файла к файлу? Если не меняется, то можно по месту ячейки обращаться, зная заранее, что именно там нужное значение.

  38. Добрый день, подскажите как можно программно через 1С найти дату и время документа эксель, который выбрал пользователь в обработке?
    Объясню: Пользователь выбирает файл эксель в обработке, далее обработка выполняет загрузку данных из этого документа, появилась необходимость сохранять(для истории) полное имя файла и дату файла, который указывал пользователь.
    Что то я не нашел как это сделать, подскажите, если знаете. Спасибо!

    1. Решил сам: — Книга — это в коде уже открытый файл экселя.

      ПользовательКоторыйСохранилЭксель = «»;
      ДатаФайлаЭксель = Дата(1,1,1);
      Для Каждого Стр ИЗ Книга.BuiltinDocumentProperties Цикл
      Если (Стр.Name = «Author» ИЛИ Стр.Name = «Last author») И ЗначениеЗаполнено(Стр.Value) Тогда
      ПользовательКоторыйСохранилЭксель = Стр.Value;
      КонецЕсли;
      Если (Стр.Name = «Creation date» ИЛИ Стр.Name = «Last save time») И ЗначениеЗаполнено(Стр.Value) Тогда
      ДатаФайлаЭксель = Стр.Value;
      КонецЕсли;
      КонецЦикла;

Добавить комментарий для Shemm Отменить ответ

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

Next Post

Очистка Кэша. Кэш, который нужно иногда чистить (1С: v8: Программисту и Пользователю)

Вт Май 18 , 2010
Вопрос Что делать при нестабильной работе 1с? Например, на двух разных компьютерах при внешне одних и тех же условиях программа 1с ведет себя по-разному, выдает какие-то ошибки или как-то некорректно отображает документ и т.п. Ответ Бывает так, что на двух разных компьютерах при внешне одних и тех же условиях программа […]