Имя: Пароль:
1C
1С v8
Работа с разными экземпляроми 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) Хм, спасибо огромное. Одного всеравно не пойму посути
ФайлШаблон = МакетЕксель.Получить();
Получается тоже берет уже открытй сом объект.
/ушел радоваться
Основная теорема систематики: Новые системы плодят новые проблемы.