|
Работа с разными экземпляроми Excel | ☑ | ||
---|---|---|---|---|
0
MiniMuk
25.04.13
✎
06:35
|
Добрый день.
Есть проблема собрать листы экселя в один файл. Есть такой код //Получаем экземпляр экселя ссумирующего файла Эксель = Новый COMObject("Excel.Application"); //получаем в этом экземпляре книгу или создаем новую Эксель.Workbooks.Open(ИмяФайла); //или Эксель.Workbooks.Add(); однофигственно //теперь в цикле дергаем макет из базы какойтотамцикл тратата ФайлШаблон = МакетЕксель.Получить(); ФайлШаблон.Windows(ФайлШаблон.Name).Visible = 1; ЛистШаблона = ФайлШаблон.Sheets(1); //чепятам макет ЗаполнитьМакет( ЛистШаблона, блаблабла); //копирую лист макета в файл ЛистШаблона.Copy(ФайлЭксель.Sheets(1)); конецкакогототамцикла внимание вопрос если не открыт эксель то все нормально отрабатывает если открыт файл экселя то ошибка копирования. Как поправить Локализуем ошибочку Причина как я понимаю разные (какимтошишом отделеные) экземпляры экселя У меня моделируется так. Щелкаем запуск экселя 2 раза получеем книга1, книга2 пытаемся копировать лист эксель вдругую книгу не видет другой книги. Теперь в экземпляре Книга2 делаем создать новый файла. Теперь копирование листов возможно между книга2 и книга3 |
|||
1
MiniMuk
25.04.13
✎
06:36
|
да, уточняю МакетЕксель = Документы.БлаблаБла.ПолучитьМакет("Блаблабла");
|
|||
2
Мимохожий Однако
25.04.13
✎
06:38
|
Я бы сделал макрос на экселе по сборке в один файл листы с разных файлов.
|
|||
3
MiniMuk
25.04.13
✎
06:43
|
(2) Может вы ненароком накидаете выполнение маросов из 1с?
Смотри локализацию, я по сути средсвами экселя это сделать не могу, не то что из 1с. Я думаю если я ручками сделать не могу, то макросы мало помогут, они только механически повторяют что ручками сделано. Тут надо как я понимаювсе увязать в один сom объект |
|||
4
Cube
25.04.13
✎
06:43
|
Может проблема в том, что у тебя разные COM объекты?
Попробуй что-то вроде: Попытка MSWord = ПолучитьCOMОбъект(, "Word.Application"); //Если Word уже открыт, то подключаемся к нему. Исключение Попытка MSWord = Новый COMОбъект("Word.Application"); //Открываем Word. Исключение Сообщить("Ошибка формирования печатной формы. Скорее всего на Вашем компьютере не установлен Microsoft Word.", СтатусСообщения.Внимание); Сообщить(ОписаниеОшибки(), СтатусСообщения.Внимание); Возврат; КонецПопытки; КонецПопытки; |
|||
5
MiniMuk
25.04.13
✎
06:48
|
(4) Чтото вроде. Только я делаю не COMОбъект(
а получить ПолучитьМакет(.. который вовращает ком объект |
|||
6
Cube
25.04.13
✎
06:51
|
(5) Срока из (0):
Эксель = Новый COMObject("Excel.Application"); Или я что-то не правильно понял или в (0) ошибка? |
|||
7
Мимохожий Однако
25.04.13
✎
06:57
|
(3)Запускай запись макроса. Сохрани. Потом подправь.
А потом полученный макрос запускай из 1С. |
|||
8
MiniMuk
25.04.13
✎
07:00
|
(6) Хм, спасибо огромное. Одного всеравно не пойму посути
ФайлШаблон = МакетЕксель.Получить(); Получается тоже берет уже открытй сом объект. /ушел радоваться |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |