1С 8.х и Excel
Чтение данных из Excel
Доступ из 1С к Excel производится посредством OLE. Создание COM-объекта:
Попытка Эксель = СоздатьОбъект("Excel.Application"); Исключение Сообщить(ОписаниеОшибки()); Возврат; КонецПопытки;
Теперь используя переменную Эксель можно управлять приложением Excel.
- Внимание! Microsoft Excel должен быть установлен на компьютере!
Следующая команда откроет книгу:
Книга = Эксель.WorkBooks.Open(ПутьКФайлу);
Перед тем, как начать считывание данных, укажем лист книги, с которого будем считывать данные:
Лист = Книга.WorkSheets(НомерЛиста);
Нумерация листов книги начинается с 1. Общее количество листов можно получить, используя
следующую команду:
КоличествоЛистов = Книга.Sheets.Count;
Лист можно выбрать по имени листа в книге:
Лист = Книга.WorkSheets(ИмяЛиста);
Имя листа в книге можно получить по номеру:
ИмяЛиста = Книга.Sheets(НомерЛиста).Name;
Итак, мы открыли книгу и выбрали лист, теперь посмотрим, сколько строк и колонок
на выбранном листе:
ВсегоКолонок = Лист.Cells(1,1).SpecialCells(11).Column; ВсегоСтрок = Лист.Cells(1,1).SpecialCells(11).Row;
Получим значения ячейки листа в строке НомерСтроки и в колонке НомерКолонки:
Значение = Лист.Cells(НомерСтроки, НомерКолонки).Value;
Ниже приведен отрывок кода, запустив который мы прочитаем все данные с первой страницы:
Эксель = СоздатьОбъект("Excel.Application"); Книга = Эксель.WorkBooks.Open(ПутьКФайлу); Лист = Книга.WorkSheets(1); ВсегоКолонок = Лист.Cells(1,1).SpecialCells(11).Column; ВсегоСтрок = Лист.Cells(1,1).SpecialCells(11).Row; для Строка = 1 по ВсегоСтрок цикл для Колонка = 1 по ВсегоКолонок цикл Значение = СокрЛП(Лист.Cells(Строка,Колонка).Value); КонецЦикла; КонецЦикла;
Где ПутьКФайлу — полный путь к файлу книги Excel (включая имя).
После выполнения действий необходимо закрыть книгу:
Эксель.Application.Quit();
Выгрузка данных в Excel
Для вывода (выгрузки) данных в Excel необходимо либо открыть существующую книгу,
либо создать новую, и выбрать рабочий лист для вывода данных.
Для создания новой книги можно использовать следующий код:
Попытка Эксель = СоздатьОбъект("Excel.Application"); Исключение Сообщить(ОписаниеОшибки()); Возврат; КонецПопытки; Книга = Эксель.WorkBooks.Add();
При создании книги автоматически создаются листы (по умолчанию 3).
Нам остается только выбрать нужный:
Лист = Книга.WorkSheets(НомерЛиста);
Или добавить в книгу новый лист:
Лист = Книга.Sheets.Add();
Добавим в ячейку на листе значение:
Лист.Cells(НомерСтроки, НомерКолонки).Value = Значение;
Запишем книгу:
Попытка Книга.SaveAs(ПутьКФайлу); Исключение Сообщить(ОписаниеОшибки()+" Файл не сохранен!"); КонецПопытки;
Где ПутьКФайлу — полный путь к файлу книги Excel (включая имя).
После выполнения действий необходимо закрыть книгу:
Эксель.Application.Quit();
Часто используемые методы Excel
Эксель.Visible = Видимость; | 0 — Excel не виден, 1 — виден. |
Книга = Эксель.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(НомерСтроки, НомерКолонки).Value = Значение; | Ввод данных в ячейку. |
Лист.Cells(НомерСтроки,НомерКолонки).Font.Name = ИмяШрифта; | Установка шрифта в ячейке. |
Лист.Cells(НомерСтроки,НомерКолонки).Font.Size = РазмерШрифта; | Установка размера шрифта в ячейке. |
Лист.Cells(НомерСтроки,НомерКолонки).Font.Bold = Жирный; | 1 — жирный шрифт, 0 — нормальный. |
Лист.Cells(НомерСтроки,НомерКолонки).Font.Italic = Курсив; | 1 — наклонный шрифт, 0 — нормальный. |
Лист.Cells(НомерСтроки,НомерКолонки).Font.Underline = Подчеркнутый; | 2 — подчеркнутый, 1 — нет. |
Лист.Cells(НомерСтроки, НомерКолонки).NumberFormat = Формат; | Установка формата данных ячейки. |
Лист.Cells(НомерСтроки,НомерКолонки).Borders.Linestyle = ТипЛинии; | Установка рамок ячейки. 1 — тонкая сплошная. |
Лист.Protect(); | Установка защиты на лист |
Лист.UnProtect(); | Снятие защиты с листа |
Лист.Cells(Строка, Столбец).Locked=0; | Ячейка будет доступной (и после установки защиты на лист) |
Хитрости Excel
Как выборочно разрешить / запретить редактирование ячеек листа
//Создаем объект EXCEL Эксель = СоздатьОбъект("Excel.Application"); Книга = Эксель.WorkBooks.Open(ФайлВыгрузки); Лист =Книга.Worksheets("Список сотрудников"); // Выбор листа Книга.ActiveSheet.UnProtect(); //делаем шаблон незащищенным // Заполняем лист ................................... // Снимаем защиту с области ввода сумм Для Перем = 1 По 10 Цикл // Прописываем, какие ячейки будут доступными Книга.ActiveSheet.Cells(Перем, 2).Locked=0; КонецЦикла; Книга.ActiveSheet.Protect(); // ставим защиту на лист
Как осуществить поиск / замену значений ячеек на листе
//Выбираем область поиска - весь лист ОбластьПоиска = Лист.Cells; // Укажем начало листа НачалоЛиста = Диапазон.Cells(1, 1); // Ищем ячейку с текстом, указанным в переменной ТекстДляПоиска, //укажем откуда искать - с начала листа ОбластьПараметр = ОбластьПоиска.Find(ТекстДляПоиска, НачалоЛиста); // Если нашли, заполняем значением из переменной Значение Если ОбластьПараметр <> неопределено Тогда ОбластьПараметр.Value = Значение; КонецЕсли;
Замечание. Текст для замены лучше выделять, например, в угловые скобки, аналогично
параметрам макета в 1С. Это улучшит наглядность, визуально отделит от рабочего текста.
Текст для поиска в этом случае будет выглядеть так:
ТекстДляПоиска = «<ИмяДляЗамены>»
Как скопировать / удалить строку
//Выбираем область поиска - весь лист ОбластьПоиска = Лист.Cells; // Найдем нужную нам ячейку // Если не указываем откуда искать - то с текущей ячейки, это первая ячейка на листе НайденнаяОбласть = ОбластьПоиска.Find("Текст для поиска"); // Выделяем всю строку НайденнаяОбласть.EntireRow.Select(); // Копируем выделенное НайденнаяОбласть.EntireRow.Copy(); // Вставляем (новая строка будет вставлена тут же) НайденнаяОбласть.EntireRow.Insert(); // Теперь как удалить строку. Найдем область НайденнаяОбласть = ОбластьПоиска.Find("Текст для поиска", НачалоЛиста); НайденнаяОбласть.EntireRow.Delete();
Замечание. Приведенные выше примеры позволят, например, организвать работу с шаблонами на основании листов Excel.
Импорт данных из Excel в 1С. Получение списка листов (имен листов) из Excel (xls, xlsx)
Все последние версии 1С:Предприятия имеют возможность открывать и использовать com-объекты из встроенного языка программирования 1С. Операционная система Windows и установленные в ней программы предлагают богатый набор таких объектов, в том числе интерфейсы для доступа к различным базам данных при помощи технологии ADO (ActiveX Data Objects)
Использование объектов ADO и их интерфейсов позволяет легко производить загрузку данных из Excel в 1С. В этой статье мы покажем функцию для 1С, которая считывает имена всех листов из книги Excel в 1С.
Зачем нужна функция чтения списка листов из Excel в 1С ? Дело в том, что при работе в 1С постоянно требуются данные, предоставляемые в файлах формата Excel, какие-то отчеты, прайсы и прочее, но сама 1С:Предприятие не содержит встроенных функций по импорту данных Excel.
Экспорт данных, выгрузка в Excel при помощи встроенных функций возможна — для этого используются методы объекта ТабличныйДокумент.Записать(), который позволяют записать содержимое документа в формате рабочей книги Microsoft Excel. Но вот обратного импорта, кроме ручного копирования столбцов и строк через клипборд — не предусмотрено.
Минуточку! Если Вам была хоть какая-то польза… от моих статей на этом сайте fast-soft.ru, пожалуйста, оставьте свое мнение в комментариях или поделитесь с друзьями, нажав кнопочки социальных сетей — на этой странице. Этим Вы поможете мне, скромному программисту, в развитии сайта. Спасибо!
Данная функция, рассматриваемая в этой статье, функция чтения списка листов из книги Excel в 1С является «подготовительной» для следующей, универсальной функции импорта данных из Excel в 1С. Эта функция импорта будет описана на нашем сайте fast-soft.ru в следующей статье.
Я не нашел в интернете «внятного» и универсального примера функции импорта данных из файлов Excel. Некоторые примеры имелись, но были привязаны к структуре конкретного xls-файла, с заранее известными именами листов, а так же требовали наличия установленной копии Microsoft Excel.
Для своей работы такие примеры использовали com-объект «Excel.Application», что во многих случаях просто неудобно, так как инициализация такого объекта требует больших ресурсов компьютера, да и не всегда имеется возможность купить и установить пакет Microsoft Office (в который входит Excel) на каждой машине, где это требуется.
Мы пойдем другим путем. Для получения данных их файлов Excel (при помощи ADO и драйверов OLE DB) не обязательно иметь на компьютере установленный Microsoft Excel, так как один из драйверов OLE DB позволяет интерпретировать файл Excel (а именно, рабочую книгу Excel (Workbook) — как типовую базу данных и производить с ней различные операции.
Таблицами в такой «базе данных» являются листы рабочей книги. В этой, как и в любой другой базе данных (БД), помимо манипуляции с самими данными, как таковыми, существует возможность получить некоторую информацию о структуре самой БД. Инфомацию о структуре объектов базы данных и связей между ними зачастую принято называть «схемой базы данных»
При помощи функций получения схемы БД у объекта «ADODB.Connection» мы сможем получить перечень, список листов (в терминах БД — таблиц) из файла Excel.
Ниже я привожу код функции, получающей на входе полное имя файла Excel, содержащее путь к файлу, и имя с расширением файла (*.xls, *.xlsx) и возвращающей объект-массив 1С, который в качестве своих элементов содержит строки с именами листов исходного файла. Если чтение списка листов файла не удалось, то функция возвращает значение «Неопределено»
// функция возвращает массив, содержащий имена листов книги из указанного файла Excel (формат Excel 97-2010) или Неопределено, // если попытка чтения списка листов не удалась // <ИмяФайла> - полное имя файла (путь к файлу с именем файла и расширением файла xls или xlsx) // Пример вызова: Список = ФайлExcel_ПолучитьСписокЛистов("c:ОтчетыПрайс.xlsx") // <Список> содержит массив строк, с именами листов в файле "Прайс.xlsx", например: Лист1$, Лист2$, Лист3$ Функция ФайлExcel_ПолучитьСписокЛистов(ИмяФайла) adSchemaTables = 20; adFalse = 0; // формируем строку соединения для использования нашего файла Excel СтрокаСоединения = ФорматСтроки("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=%1; Extended Properties=""Excel 12.0;""", ИмяФайла); // если готовый объект Connection не был передан в функцию, тогда создаем его сами Попытка AdoConnection = Новый COMОбъект("ADODB.Connection"); Исключение Сообщить(ОписаниеОшибки()); // если была ошибка в блоке, то сообщаем о ней и выходим Возврат Неопределено; КонецПопытки; СписокЛистов = Новый Массив; // получаем схему базы данных и заносим список таблиц(листов) в массив Попытка AdoConnection.Open(СтрокаСоединения); // получаем recordset, содержащий схему таблиц базы даннных // поля таблицы-схемы: TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, TABLE_TYPE, TABLE_GUID, DESCRIPTION, TABLE_PROPID, DATE_CREATED, DATE_MODIFIED // из них заполнены: TABLE_NAME, TABLE_TYPE SchemaRecordset = AdoConnection.OpenSchema(adSchemaTables); // в цикле "перебираем" все записи в объекте SchemaRecordset Пока SchemaRecordset.EOF() = adFalse Цикл // добавляем имя таблицы (листа) в массив СписокЛистов.Добавить(SchemaRecordset.Fields("TABLE_NAME").Value); // переход на следующую запись SchemaRecordset SchemaRecordset.MoveNext(); КонецЦикла; Исключение Сообщить(ОписаниеОшибки()); // если была ошибка в блоке, то сообщаем о ней и выходим Возврат Неопределено; КонецПопытки; Возврат СписокЛистов; КонецФункции
Пояснения к функции чтения списка листов из Excel в 1С даны во встроенных комментариях в приведенном выше коде 1С. Если возникнут вопросы, то задавайте их в комментариях к статье.
Важно: Драйвер, при помощи которого мы получаем возможность работы через OLE DB с файлами Excel должен быть установлен на компьютере. Если функция не работает, скачайте и установите пакет, содержащий все необходимые компоненты (MDAC и дополнительные драйвера OLE DB) с этой страницы сайта Microsoft
Изнутри функции ФайлExcel_ПолучитьСписокЛистов() вызывается функция ФорматСтроки(). Ее текст можно посмотреть на нашем сайте — ФорматСтроки()
С уважением, Дегтярев Роман.
Как научиться программировать в 1С с нуля?
Как работать программистом 1С и получать до 150 000 рублей в месяц?
ЗАПИШИСЬ НА БЕСПЛАТНЫЙ
2-НЕДЕЛЬНЫЙ КУРС
«ПРОГРАММИРОВАНИЕ в 1С ДЛЯ НОВИЧКОВ»
Курс придет на электронную почту. Стань программистом, выполняя пошаговые задания.
Для участия нужен только компьютер и интернет
Бесплатный доступ на курс:
Комментарии для тех, кто VKontakte
1С 8.х и Excel
Чтение данных из Excel
Доступ из 1С к Excel производится посредством OLE. Создание COM-объекта:
Попытка
Эксель = СоздатьОбъект("Excel.Application");
Исключение
Сообщить(ОписаниеОшибки());
Возврат;
КонецПопытки;
Теперь используя переменную Эксель можно управлять приложением Excel.
- Внимание! Microsoft Excel должен быть установлен на компьютере!
Следующая команда откроет книгу:
Книга = Эксель.WorkBooks.Open(ПутьКФайлу);
Перед тем, как начать считывание данных, укажем лист книги, с которого будем считывать данные:
Лист = Книга.WorkSheets(НомерЛиста);
Нумерация листов книги начинается с 1. Общее количество листов можно получить, используя следующую команду:
КоличествоЛистов = Книга.Sheets.Count;
Лист можно выбрать по имени листа в книге:
Лист = Книга.WorkSheets(ИмяЛиста);
Имя листа в книге можно получить по номеру:
ИмяЛиста = Книга.Sheets(НомерЛиста).Name;
Итак, мы открыли книгу и выбрали лист, теперь посмотрим, сколько строк и колонок на выбранном листе:
ВсегоКолонок = Лист.Cells(1,1).SpecialCells(11).Column;
ВсегоСтрок = Лист.Cells(1,1).SpecialCells(11).Row;
Получим значения ячейки листа в строке НомерСтроки и в колонке НомерКолонки:
Значение = Лист.Cells(НомерСтроки, НомерКолонки).Value;
Ниже приведен отрывок кода, запустив который мы прочитаем все данные с первой страницы:
Эксель = СоздатьОбъект("Excel.Application");
Книга = Эксель.WorkBooks.Open(ПутьКФайлу);
Лист = Книга.WorkSheets(1);ВсегоКолонок = Лист.Cells(1,1).SpecialCells(11).Column;
ВсегоСтрок = Лист.Cells(1,1).SpecialCells(11).Row;для Строка = 1 по ВсегоСтрок цикл
для Колонка = 1 по ВсегоКолонок цикл
Значение = СокрЛП(Лист.Cells(Строка,Колонка).Value);
КонецЦикла;КонецЦикла;
Где ПутьКФайлу — полный путь к файлу книги Excel (включая имя).
После выполнения действий необходимо закрыть книгу:
Эксель.Application.Quit();
Выгрузка данных в Excel
Для вывода (выгрузки) данных в Excel необходимо либо открыть существующую книгу, либо создать новую, и выбрать рабочий лист для вывода данных.
Для создания новой книги можно использовать следующий код:
Попытка
Эксель = СоздатьОбъект("Excel.Application");
Исключение
Сообщить(ОписаниеОшибки());
Возврат;
КонецПопытки;
Книга = Эксель.WorkBooks.Add();
При создании книги автоматически создаются листы (по умолчанию 3). Нам остается только выбрать нужный:
Лист = Книга.WorkSheets(НомерЛиста);
Или добавить в книгу новый лист:
Лист = Книга.Sheets.Add();
Добавим в ячейку на листе значение:
Лист.Cells(НомерСтроки, НомерКолонки).Value = Значение;
Запишем книгу:
Попытка
Книга.SaveAs(ПутьКФайлу);
Исключение
Сообщить(ОписаниеОшибки()+" Файл не сохранен!");
КонецПопытки;
Где ПутьКФайлу — полный путь к файлу книги Excel (включая имя).
После выполнения действий необходимо закрыть книгу:
Эксель.Application.Quit();
Часто используемые методы Excel
Эксель.Visible = Видимость; | 0 — Excel не виден, 1 — виден. |
Книга = Эксель.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(НомерСтроки, НомерКолонки).Value = Значение; | Ввод данных в ячейку. |
Лист.Cells(НомерСтроки,НомерКолонки).Font.Name = ИмяШрифта; | Установка шрифта в ячейке. |
Лист.Cells(НомерСтроки,НомерКолонки).Font.Size = РазмерШрифта; | Установка размера шрифта в ячейке. |
Лист.Cells(НомерСтроки,НомерКолонки).Font.Bold = Жирный; | 1 — жирный шрифт, 0 — нормальный. |
Лист.Cells(НомерСтроки,НомерКолонки).Font.Italic = Курсив; | 1 — наклонный шрифт, 0 — нормальный. |
Лист.Cells(НомерСтроки,НомерКолонки).Font.Underline = Подчеркнутый; | 2 — подчеркнутый, 1 — нет. |
Лист.Cells(НомерСтроки, НомерКолонки).NumberFormat = Формат; | Установка формата данных ячейки. |
Лист.Cells(НомерСтроки,НомерКолонки).Borders.Linestyle = ТипЛинии; | Установка рамок ячейки. 1 — тонкая сплошная. |
Лист.Protect(); | Установка защиты на лист |
Лист.UnProtect(); | Снятие защиты с листа |
Лист.Cells(Строка, Столбец).Locked=0; | Ячейка будет доступной (и после установки защиты на лист) |
Хитрости Excel
Как выборочно разрешить / запретить редактирование ячеек листа
//Создаем объект EXCEL
Эксель = СоздатьОбъект("Excel.Application");
Книга = Эксель.WorkBooks.Open(ФайлВыгрузки);
Лист =Книга.Worksheets("Список сотрудников"); // Выбор листаКнига.ActiveSheet.UnProtect(); //делаем шаблон незащищенным
// Заполняем лист
...................................
// Снимаем защиту с области ввода сумм
Для Перем = 1 По 10 Цикл
// Прописываем, какие ячейки будут доступными
Книга.ActiveSheet.Cells(Перем, 2).Locked=0;
КонецЦикла;Книга.ActiveSheet.Protect(); // ставим защиту на лист
Как осуществить поиск / замену значений ячеек на листе
//Выбираем область поиска - весь лист
ОбластьПоиска = Лист.Cells;// Укажем начало листа
НачалоЛиста = Диапазон.Cells(1, 1);// Ищем ячейку с текстом, указанным в переменной ТекстДляПоиска,
//укажем откуда искать - с начала листа
ОбластьПараметр = ОбластьПоиска.Find(ТекстДляПоиска, НачалоЛиста);// Если нашли, заполняем значением из переменной Значение
Если ОбластьПараметр <> неопределено Тогда
ОбластьПараметр.Value = Значение;
КонецЕсли;
Замечание. Текст для замены лучше выделять, например, в угловые скобки, аналогично параметрам макета в 1С. Это улучшит наглядность, визуально отделит от рабочего текста.
Текст для поиска в этом случае будет выглядеть так:
ТекстДляПоиска = «<ИмяДляЗамены>»
Как скопировать / удалить строку
//Выбираем область поиска - весь лист
ОбластьПоиска = Лист.Cells;// Найдем нужную нам ячейку
// Если не указываем откуда искать - то с текущей ячейки, это первая ячейка на листе
НайденнаяОбласть = ОбластьПоиска.Find("Текст для поиска");// Выделяем всю строку
НайденнаяОбласть.EntireRow.Select();// Копируем выделенное
НайденнаяОбласть.EntireRow.Copy();// Вставляем (новая строка будет вставлена тут же)
НайденнаяОбласть.EntireRow.Insert();// Теперь как удалить строку. Найдем область
НайденнаяОбласть = ОбластьПоиска.Find("Текст для поиска", НачалоЛиста);
НайденнаяОбласть.EntireRow.Delete();
Замечание. Приведенные выше примеры позволят, например, организвать работу с шаблонами на основании листов Excel.
————————
Взято отсюда: http://programna1c.narod.ru/docs/Excel/Excel1C8.html
Чтение данных из Excel
Доступ из 1С к Excel производится посредством OLE. Создание COM-объекта:
Попытка
Эксель = СоздатьОбъект(“Excel.Application”);
Исключение
Сообщить(ОписаниеОшибки());
Возврат;
КонецПопытки;
Теперь используя переменную Эксель можно управлять приложением Excel.
- Внимание! Microsoft Excel должен быть установлен на компьютере!
Следующая команда откроет книгу:
Книга = Эксель.WorkBooks.Open(ПутьКФайлу);
Перед тем, как начать считывание данных, укажем лист книги, с которого будем считывать данные:
Лист = Книга.WorkSheets(НомерЛиста);
Нумерация листов книги начинается с 1. Общее количество листов можно получить, используя следующую команду:
КоличествоЛистов = Книга.Sheets.Count;
Лист можно выбрать по имени листа в книге:
Лист = Книга.WorkSheets(ИмяЛиста);
Имя листа в книге можно получить по номеру:
ИмяЛиста = Книга.Sheets(НомерЛиста).Name;
Итак, мы открыли книгу и выбрали лист, теперь посмотрим, сколько строк и колонок на выбранном листе:
ВсегоКолонок = Лист.Cells(1,1).SpecialCells(11).Column;
ВсегоСтрок = Лист.Cells(1,1).SpecialCells(11).Row;
Получим значения ячейки листа в строке НомерСтроки и в колонке НомерКолонки:
Значение = Лист.Cells(НомерСтроки, НомерКолонки).Value;
Ниже приведен отрывок кода, запустив который мы прочитаем все данные с первой страницы:
Эксель = СоздатьОбъект(“Excel.Application”);
Книга = Эксель.WorkBooks.Open(ПутьКФайлу);
Лист = Книга.WorkSheets(1);
ВсегоКолонок = Лист.Cells(1,1).SpecialCells(11).Column;
ВсегоСтрок = Лист.Cells(1,1).SpecialCells(11).Row;
Для Строка = 1 по ВсегоСтрок цикл
для Колонка = 1 по ВсегоКолонок цикл
Значение = СокрЛП(Лист.Cells(Строка,Колонка).Value);
КонецЦикла;
КонецЦикла;
где ПутьКФайлу – полный путь к файлу книги Excel (включая имя).
После выполнения действий необходимо закрыть книгу:
Эксель.Application.Quit();
Выгрузка данных в Excel
Для вывода (выгрузки) данных в Excel необходимо либо открыть существующую книгу, либо создать новую, и выбрать рабочий лист для вывода данных.
Для создания новой книги можно использовать следующий код:
Попытка
Эксель = СоздатьОбъект("Excel.Application");
Исключение
Сообщить(ОписаниеОшибки());
Возврат;
КонецПопытки;
Книга = Эксель.WorkBooks.Add();
При создании книги автоматически создаются листы (по умолчанию 3). Нам остается только выбрать нужный:
Лист = Книга.WorkSheets(НомерЛиста);
Или добавить в книгу новый лист:
Лист = Книга.Sheets.Add();
Добавим в ячейку на листе значение:
Лист.Cells(НомерСтроки, НомерКолонки).Value = Значение;
Запишем книгу:
Попытка
Книга.SaveAs(ПутьКФайлу);
Исключение
Сообщить(ОписаниеОшибки()+” Файл не сохранен!”);
КонецПопытки;
где ПутьКФайлу – полный путь к файлу книги Excel (включая имя).
После выполнения действий необходимо закрыть книгу:
Эксель.Application.Quit();
Здесь можно скачать обработку, позволяющую из выбранного файла Excel загрузить данные со всех страниц:
Часто используемые методы Excel
Эксель.Visible = Видимость; | 0 – Excel не виден, 1 – виден. |
Книга = Эксель.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(НомерСтроки, НомерКолонки).Value = Значение; | Ввод данных в ячейку. |
Лист.Cells(НомерСтроки,НомерКолонки).Font.Name = ИмяШрифта; | Установка шрифта в ячейке. |
Лист.Cells(НомерСтроки,НомерКолонки).Font.Size = РазмерШрифта; | Установка размера шрифта в ячейке. |
Лист.Cells(НомерСтроки,НомерКолонки).Font.Bold = Жирный; | 1 – жирный шрифт, 0 – нормальный. |
Лист.Cells(НомерСтроки,НомерКолонки).Font.Italic = Курсив; | 1 – наклонный шрифт, 0 – нормальный. |
Лист.Cells(НомерСтроки,НомерКолонки).Font.Underline = Подчеркнутый; | 2 – подчеркнутый, 1 – нет. |
Лист.Cells(НомерСтроки, НомерКолонки).NumberFormat = Формат; | Установка формата данных ячейки. |
Лист.Cells(НомерСтроки,НомерКолонки).Borders.Linestyle = ТипЛинии; | Установка рамок ячейки. 1 – тонкая сплошная. |
Лист.Protect(); | Установка защиты на лист |
Лист.UnProtect(); | Снятие защиты с листа |
Лист.Cells(Строка, Столбец).Locked=0; | Ячейка будет доступной (и после установки защиты на лист) |
Хитрости Excel
Как выборочно разрешить / запретить редактирование ячеек листа
//Создаем объект EXCEL
Эксель = СоздатьОбъект(“Excel.Application”);
Книга = Эксель.WorkBooks.Open(ФайлВыгрузки);
Лист =Книга.Worksheets(“Список сотрудников”); // Выбор листа
Книга.ActiveSheet.UnProtect();
//делаем шаблон незащищенным
// Заполняем лист ……………………………..
// Снимаем защиту с области ввода сумм
Для Перем = 1 По 10 Цикл
// Прописываем, какие ячейки будут доступными
Книга.ActiveSheet.Cells(Перем, 2).Locked=0;
КонецЦикла;
Книга.ActiveSheet.Protect(); // ставим защиту на лист
Взято с http://programna1c.narod.ru/docs/Excel/Excel1C8.html
СПОСОБ ПОИСКА НАИМЕНОВАНИЙ СВОЙСТВ И МЕТОДОВ VBA EXCEL С ПОМОЩЬЮ ЗАПИСИ МАКРОСОВ
На практике часто случается, что нужно решить какую-либо задачу, иногда довольно тривиальную с точки зрения пользователя Excel (к примеру изменить фон ячейки в Excel, добавить левую границу и т.д.), а решение в сети/документации искать не хочется или не получается, тогда можно попробовать начать запись макроса, выполнить нужную последовательность действий (изменить фон, добавить границу) , после чего записать макрос и открыть код VBA для анализа кода, названий свойств и методов. Такой способ довольно часто помогает быстро решить проблему.
1. Подключение к Excel
Попытка Excel = Новый COMОбъект("Excel.Application"); Исключение Сообщить(ОписаниеОшибки() + "Возможно программа Exсel не установлена на данном компьютере!"); Возврат Ложь; КонецПопытки; //Создание книги Книга = Excel.WorkBooks.Add(); //Открытие существующей книги Книга = Excel.WorkBooks.Open(ПутьКФайлу); //Выбор рабочего листа по номеру Лист = WorkBook.WorkSheets(НомерЛиста); //Выбор рабочего листа по имени Лист = WorkBook.WorkSheets(ИмяЛиста); //Сохранение книги Попытка Книга.SaveAs(ПутьКФайлу); Книга.Close(); Excel.Quit(); Исключение Книга.Close(); Excel.Quit(); КонецПопытки;
При подключении к Excel не забываем закрывать приложение после работы дабы не наплодить кучу ненужных процессов. Они также могут появиться если во время выполнения модуля выскочит ошибка до того как система дойдет до строк, где происходит закрытие Excel.
2. Запись значения в ячейку
ТекущийЛист.Cells(i, j).Value = «2»;
Количество листов книги
КоличествоЛистов = Книга.Sheets.Count;
3. Шрифт и размер шрифта
//Выделение области
Excel.Columns(«A:H»).Select();//Размер шрифта
Лист.Cells.Font.Size = 12;//Тип шрифта
Лист.Cells.Font.Name = «Calibri»;//1 — жирный шрифт, 0 — обычный.
Лист.Cells.Font.Bold = 1;//1 — наклонный шрифт, 0 — обычный.
Лист.Cells.Font.Italic = 1;//2 — подчеркнутый, 1 — нет.
Лист.Cells.Font.Underline = 1;
Как указать цвет шрифта в ячейке, цвет рамки, цвет фона
Книга.Sheets(1).Cells(1,1).Borders.Color = 25525124; // цвет рамки Книга.Sheets(1).Cells(1,1).Font.Color = 255000000; // цвет шрифта Книга.Sheets(1).Cells(1,1).Interior.Color = 255045; // цвет фона
4. Ширина колонки
Чтобы скрыть колонку, нужно установить ширину в значение 0.
Лист.Columns(НомерКолонки).ColumnWidth = Ширина;
Получение последней ячейки в используемом диапазоне
Например, при открытии таблицы нам нужно узнать до какой строки и/или до какого столбца присутствуют заполненные ячейки.
ВсегоКолонок = Лист.Cells(1,1).SpecialCells(11).Column;
ВсегоСтрок = Лист.Cells(1,1).SpecialCells(11).Row;
4. Установка фильтра
Лист.Cells.AutoFilter();
5. Горизонтальное выравнивание ячейки
ТекущийЛист.Cells(i, j).HorizontalAlignment = -4130;
Режим выравнивания
|
Константа в Excel
|
Значение в ISBL
|
По центру
|
xlHAlignCenter
|
-4108
|
По центру выделения
|
xlHAlignCenterAcrossSelection
|
7
|
Распределенное
|
xlHAlignDistributed
|
-4117
|
С заполнением
|
xlHAlignFill
|
5
|
По значению
|
xlHAlignGeneral
|
1
|
По ширине
|
xlHAlignJustify
|
-4130
|
По левому краю
|
xlHAlignLeft
|
-4131
|
По правому краю
|
xlHAlignRight
|
-4152
|
6. Вертикальное выравнивание ячейки
ТекущийЛист.Cells(i, j).VerticalAlignment = -4130;
Режим выравнивания
|
Константа в Excel
|
Значение в ISBL
|
По нижнему краю
|
xlVAlignBottom
|
-4107
|
По центру
|
xlVAlignCenter
|
-4108
|
Распределенное
|
xlVAlignDistributed
|
-4117
|
По высоте
|
xlVAlignJustify
|
-4130
|
По верхнему краю
|
xlVAlignTop
|
-4160
|
7. Установка свойства ячейки «переносить по словам»
ТекущийЛист.Cells(i, j).WrapText = True;
8. Отключение/включение режима показа предупреждений
ExcelApp.DisplayAlerts = False; // отключение
ExcelApp.DisplayAlerts = True; // включение
9. Формулы
ТекущийЛист.Cells(i, j).Formula = «SUM(A1:A10)»;
Для формул с русскими названиями нужно использовать не Formula, а FormulaLocal. Таким образом правильными вариантами написания формул будут:
ТекущийЛист.Cells(i, j).FormulaLocal = «Сумм(A1:A10)»;
10. Таблица цветов с индексами
//Установка цвета текста ячейки
ТекущийЛист.Cells(i, j).Font.ColorIndex = 8;//Установка цвета фона ячейки
ТекущийЛист.Cells(i, j).Interior.Color = 49;//Установка цвета рамки
ТекущийЛист.Cells(i, j).Borders.Color = 8;
11. Установка границы ячейки и тип линии границы
Значения константы XlBordersIndex
Тип линии
|
Значение в Excel
|
Значение в ISBL
|
Нет линии
|
xlLineStyleNone
|
0
|
Непрерывная
|
xlContinuous
|
1
|
В виде тире и точек
|
xlDashDot
|
4
|
В виде тире и двойных точек
|
xlDashDotDot
|
5
|
В виде точек
|
xlDot
|
8
|
В виде двойной линии
|
xlDouble
|
9
|
В виде наклонной пунктирной
|
xlSlantDashDot
|
13
|
Свойство LineStyle (тип линии) может принимать следующие значения
Расположение линии
|
Значение в Excel
|
Значение в ISBL
|
Линия по диагонали сверху – вниз
|
xlDiagonalDown
|
5
|
Линия по диагонали снизу – вверх
|
xlDiagonalUp
|
6
|
Линия, обрамляющая диапазон слева
|
xlEdgeLeft
|
7
|
Линия, обрамляющая диапазон сверху
|
xlEdgeTop
|
8
|
Линия, обрамляющая диапазон снизу
|
xlEdgeBottom
|
9
|
Линия, обрамляющая диапазон справа
|
xlEdgeRight
|
10
|
Все вертикальные линии внутри диапазона
|
xlInsideVertical
|
11
|
Все горизонтальные линии внутри диапазона
|
xlInsideHorizontal
|
12
|
Получение порядкового номера колонки Excel по буквенному обозначению имени
Однажды столкнулся с тем, что нужно было получить буквенное обозначение колонки Excel по её порядковому номеру. Например, для колонки номер 3 буквенное обозначение равно «C». Так вот ниже приведены две замечательные функции, которые вполне справляются с решением данной проблемы.
// Функция - Имя колонки Excel в номер // // Параметры: // тИмяКолонки - строка - буквенное обозначение колонки Excel (Пример: A, AB, AAC и т.д.) // // Возвращаемое значение: // - число, порядковый номер колонки // Функция ExcelColumnNameToNumber(тИмяКолонки) тЛатАлфавит = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; тДлинаНомера = СтрДлина(тИмяКолонки); тНомерКолонки = 0; Для тСчет = 1 По тДлинаНомера Цикл тПоз = Найти(тЛатАлфавит, Сред(тИмяКолонки, (тДлинаНомера + 1 - тСчет), 1)); тНомерКолонки = тНомерКолонки + тПоз * Pow(26, тСчет - 1); КонецЦикла; Возврат тНомерКолонки; КонецФункции
Наоборот, получение буквенного обозначения имени колонки по номеру колонки
// Функция - Номер колонки Excel в буквенное обозначение // // Параметры: // тНомерКолонки - число - порядковый номер колонки // // Возвращаемое значение: // - строка, буквенное обозначение колонки // Функция NumberToExcelColumnName(Знач тНомерКолонки) тЛатАлфавит = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; тИмяКолонки = ""; Пока тНомерКолонки > 0 Цикл тОстаток = (тНомерКолонки - 1)%26; тБуква = Сред(тЛатАлфавит, тОстаток + 1, 1); тИмяКолонки = тБуква + тИмяКолонки; тНомерКолонки = Цел((тНомерКолонки - тОстаток)/26); КонецЦикла; Возврат тИмяКолонки; КонецФункции
Часто используемые методы 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
Лист можно выбрать по имени листа в книге:
Лист = Книга.WorkSheets(ИмяЛиста);
Имя листа в книге можно получить по номеру:
ИмяЛиста = Книга.Sheets(НомерЛиста).Name;
Точно так же можно задать имя листа:
Книга.Sheets(6).Name = «6 Резерв на отпуск»;
Итак, мы открыли книгу и выбрали лист, теперь посмотрим, сколько строк и колонок на выбранном листе:
ВсегоКолонок = Лист.Cells(1,1).SpecialCells(11).Column;
ВсегоСтрок = Лист.Cells(1,1).SpecialCells(11).Row;
Хитрости Excel
Как выборочно разрешить / запретить редактирование ячеек листа
//Создаем объект EXCEL Эксель = СоздатьОбъект("Excel.Application"); Книга = Эксель.WorkBooks.Open(ФайлВыгрузки); Лист =Книга.Worksheets("Список сотрудников"); // Выбор листа Книга.ActiveSheet.UnProtect(); //делаем шаблон незащищенным // Заполняем лист // ................................... // Снимаем защиту с области ввода сумм Для Перем = 1 По 10 Цикл // Прописываем, какие ячейки будут доступными Книга.ActiveSheet.Cells(Перем, 2).Locked=0; КонецЦикла; Книга.ActiveSheet.Protect(); // ставим защиту на лист
Как добавить лист Excel в конец списка листов книги или после конкретного листа (а не в начало книги)
Метод работает для платформ 1С v8.
Файл = Новый COMОбъект("Excel.Application"); Файл.DisplayAlerts = False; Попытка ОбщаяКнига = Файл.WorkBooks.Open(Объект.ПутьКОбщемуФайлу); Исключение Сообщить("Excel: Неудачная попытка открытия файла Excel" + ОписаниеОшибки()); //ЗаписьЖурналаРегистрации("Excel: Неудачная попытка открытия файла Excel", УровеньЖурналаРегистрации.Ошибка,,, ОписаниеОшибки()); Возврат; КонецПопытки; КоличествоЛистов = ОбщаяКнига.Sheets.Count; //2 ПоследнийЛист = ОбщаяКнига.Worksheets(КоличествоЛистов); // необходимо получить сам лист (не его номер) Если КоличествоЛистов < 8 Тогда // к примеру, нужно сделать так, чтобы в книге было 8 листов, если листов меньше, то добавляем их Пока 8 - КоличествоЛистов > 0 Цикл ОбщаяКнига.Sheets.Add(Null,ПоследнийЛист,Null,Null); // добавляем лист в конец книги КоличествоЛистов = КоличествоЛистов +1; ПоследнийЛист = ОбщаяКнига.Worksheets(КоличествоЛистов); // получаем ссылку на очередной последний лист книги КонецЦикла; КонецЕсли;
Как программно скрыть колонку файла Excel
// ПРИМЕР как скрыть колонку программно — скроется колонка №2:
ЛистОшибок.Cells(ПозицияШапкиФайла, 2).ColumnWidth = 0; // скрыть колонку №2
Создание кнопки в Excel в 7.7
ТекущийЛист.Shapes(«CommandButton»).Select
ТекущийЛист.OLEObjects(«CommandButton»).Object.Caption = «Кнопуля»;
Процедура открывает Эксель, втавляет на первый лист кнопку «Очистить» и назначает ей макрос,
устанавливающий автофильтр на колонку Е по не нулевым значениям. Текст макроса любой,
главное разделять Симв(13) строки
Попытка Ex=CreateObject("Excel.Application"); Исключение Сообщить(ОписаниеОшибки(),"!!!"); Предупреждение("Не удалось запустить MS Excel!"); Возврат; КонецПопытки; Состояние("Открытие файла..."); Попытка Wb=Ex.WorkBooks.Add(); Исключение Возврат; КонецПопытки; Ex.Visible=-1; Wb.Sheets(1).OLEObjects.Add("Forms.CommandButton.1",,,10, 99.75, 120.75, "Очистить");//27.75 st = "Private Sub CommandButton1_Click()" + Chr(13) + " ThisWorkbook.Sheets(1).Columns(""E:E"").AutoFilter Field:=1, Criteria1:="">0"", Operator:=xlAnd" + Chr(13) + "End Sub"; Ex.VBE.ActiveVBProject.VBComponents(Wb.Sheets(1).Name).CodeModule.AddFromString(st)
текст макроса пишется в переменную st.
Как подключиться к запущенному Excel-евскому файлу в реальном времени, изменить его и даже не сохранять, а просто переключить окно на 1С и сразу же выгружать данные в табличную часть, лишь переключив окна
Excel = ПолучитьCOMОбъект(, «Excel.Application»);
При этом первый параметр нужно оставить пустым. В этом случае при этом подцепится тот файл экселя, который был открыт последним, даже если порядок переключения окон был таким:
Excel1, Excel2, IE, Проводник, 1С (т.е. что-то и было открытым между 1с и экселевским файлом) — все равно откроется Excel2, потому что он был активен последним.
Описание команды ПолучитьCOMОбъект
Глобальный контекст
ПолучитьCOMОбъект (GetCOMObject)
Синтаксис:
ПолучитьCOMОбъект(<Имя файла>, <Имя класса COM>)
Параметры:
<Имя файла> (необязательный)
Тип: Строка. Имя файла, включающее полный путь.
<Имя класса COM> (необязательный)
Тип: Строка. Имя класса COM, экземпляр которого должен быть создан или получен. Если расширение имени файла, указанное в первом параметре полностью идентифицирует класс объекта, то параметр может быть опущен.
Возвращаемое значение:
Тип: COMОбъект.
Описание:
Основное применение функции ПолучитьCOMОбъект — это получение COM-объекта, соответствующего файлу. Для этого следует в качестве первого параметра функции задать имя файла, который будет определять COM-объект. Например, фрагмент кода
Таб = ПолучитьCOMОбъект(«C:DATADATA.XLS»);
создает объект Excel.Application и открывает с его помощью файл документа «C:DATADATA.XLS». Если указанный файл во время выполнения данного фрагмента уже открыт с помощью MS Excel, то будет получена ссылка на уже существующий объект.
Для файлов, указываемых в качестве параметра данной функции, должно быть установлено соответствие расширения имени файла и класса COM.
Если в качестве имени файла указана пустая строка, то будет создан новый экземпляр объекта. В этом случае необходимо указать имя класса COM.
Например, фрагмент кода:
Таб = ПолучитьCOMОбъект(«», «Excel.Application»);
создает новый документ Excel. В дальнейшем этот документ может быть программно заполнен и сохранен в файл.
Если первый параметр функции пропущен, то будет произведена попытка получить активный объект указанного типа. Если активного объекта указанного типа в настоящий момент не существует, то будет вызвано исключение. Например, в результате выполнения оператора:
П = ПолучитьCOMОбъект( , «Excel.Application»);
Переменная П получит значение типа COMОбъект, соответствующее активному приложению MS Excel, если таковое имелось, или будет вызвано исключение, если активных экземпляров MS Excel не было. Пример:
// Получение объекта COM, соответствующего файлу
Таб = ПолучитьCOMОбъект(«C:DATADATA.XLS»);
// Создание нового экземпляра объекта
Таб = ПолучитьCOMОбъект(«», «Excel.Application»);
// Получение активного объекта
Таб = ПолучитьCOMОбъект( , «Excel.Application»);
Смотрите также:
Электронный учебник по программированию в 1С
Рекомендации по изучению программирования 1С с нуля
Игра «Кто хочет стать миллионером?» с вопросами на определенную тематику (язык программирования JavaScript, английские, немецкие, французские, испанские, португальские, нидерландские, итальянские слова, электробезопасность, промышленная безопасность, бокс и т.п.), написанная на 1С
Программирование в 1С 8.3 с нуля — краткий самоучитель
Комплексная подготовка программистов 1С:Предприятие 8.2
Сайты с уроками программирования и со справочниками
Youtube-каналы с уроками программирования
Сайты для обучения программированию
Лекции и уроки