Консультация № 109039
12.11.2007, 11:40
0.00 руб.
0 3 3
Вопрос по 1с7.7:
Пытаюсь создать объект ole Excel.
Но как объект 1с его не видит. текст процедуры в приложении.

Может подскажете в чем причина?

Приложение:
ПопыткаЭксель = СоздатьОбъект("Excel.Application");Сообщить("Попал");ИсключениеСообщить("***" + Эксель); Сообщить(ОписаниеОшибки() + " Программа Exсel не установлена на данном компьютере!"); Возврат;КонецПопытки;

Обсуждение

Неизвестный
12.11.2007, 11:57
общий
это ответ
Здравствуйте, Оксана/kasy!

Получение данных из Excel.

Доступ из 1С к Excel производится посредством OLE. Например, код
Попытка
Эксель = СоздатьОбъект("Excel.Application");
Исключение
Сообщить(ОписаниеОшибки() + " Программа Exсel не установлена на данном компьютере!");
Возврат;
КонецПопытки;
позволит нам получить доступ через переменную "Эксель" к запущенному приложению Excel. А далее уже можно получить доступ к книге (файлу), листу и ячейке с данными. Далее примеры кода.

Открытие книги (файла):
Книга = Эксель.WorkBooks.Open(ПутьКФайлу);
ПутьКФайлу - полный путь к файлу книги Excel.

Выбор листа книги для работы с ним:
Лист = Книга.WorkSheets(НомерЛиста);
или
Лист = Книга.WorkSheets(ИмяЛиста);
НомерЛиста - номер листа в книге, ИмяЛиста - имя листа в книге.

Получение значения ячейки листа:
Значение = Лист.Cells(НомерСтроки, НомерКолонки).Value;
НомерСтроки, НомерКолонки - номер строки и номер колонки, на пересечении которых находится ячейка.

Важно: не забывайте поле выполнения нужных действий добавлять код Эксель.Quit(); , иначе запущенный процесс останется незавершенным и будет занимать память и процессор компьютера.

Вывод данных в Excel.

Для вывода (выгрузки) данных в Excel необходимо либо открыть существующую книгу, либо создать новую, и выбрать рабочий лист для вывода данных. Открытие существующей книги описано выше, а для создания новой книги нужно использовать следующий код:
Попытка
Эксель = СоздатьОбъект("Excel.Application");
Исключение
Сообщить(ОписаниеОшибки() + " Программа Exсel не установлена на данном компьютере!");
Возврат;
КонецПопытки;
Книга = Эксель.WorkBooks.Add();
Так как при создании книги в Excel автоматически создаются листы (Сервис->Параметры->Общие->Листов в новой книге), то нужно лишь произвести выбор листа, с которым будет вестись работа:
Лист = Книга.WorkSheets(НомерЛиста);
либо добавить в книгу новый лист, если необходимо:
Лист = Книга.Sheets.Add();
Следующим шагом будет установка значения ячейки:
Лист.Cells(НомерСтроки, НомерКолонки).Value = Значение;
НомерСтроки, НомерКолонки - номер строки и номер колонки, на пересечении которых находится ячейка.
И в конце нужно произвести запись созданной книги:
Попытка
Книга.SaveAs(ПутьКФайлу);
Исключение
Сообщить(ОписаниеОшибки()+" Файл не сохранен!");
Возврат;
КонецПопытки;
ПутьКФайлу - полный путь к файлу книги Excel (включая имя).
Важно: не забывайте, что в имени файлов не должно содержаться символов \ / : * ? " > < |.


Приложение:
Часто используемые методы для чтения/установки значений в Excel.Эксель = СоздатьОбъект("Excel.Application"); Получение доступа к приложению 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 - тонкая сплошная.
Неизвестный
12.11.2007, 13:45
общий
это ответ
<font color=red><b>!!!</b></font>
Здравствуйте, Оксана/kasy!
OLE объекты создаются через CreateObject, а не СоздатьОбъект<p><fieldset style=‘background-color:#EFEFEF; width:80%; border:red 1px solid; padding:10px;‘ class=fieldset><font color=red><i>
Функция СоздатьОбъект() прекрасно работает в модулях 1С с <b>любыми</b> объектами, CreateObject() является равноправным синонимом.</i>
-----
</font><font color=#777777 size=1><b>• Отредактировал: <a href=/info/user/10794 target=_blank>Сергей Максименко [Elric]</a></b> (Профессионал)
<b>• Дата редактирования:</b> 13.11.2007, 20:02</font></fieldset>
Неизвестный
13.11.2007, 20:06
общий
это ответ
Здравствуйте, Оксана/kasy!

У Вас скорее всего некорректно установлен MS Excel (или вообще стоит OpenOffice). Участок модуля у Вас в Приложении написан абсолютно корректно и много раз использовался на практике.
Форма ответа