Имя: Пароль:
1C
 
Копирование листа в Excel
0 Camino
 
14.02.05
13:18
Всем день добрый. Есть проблема:
Необходимо по OLE скопировать ёксельный лист. Если я пишу:
xl.Sheets("Вкладные листы").Copy();
то лист копируется в новую книгу. Читаю хэлп, вижу там следующие строки:
expression.Copy(Before, After)
Before   Optional Variant. The sheet before which the copied sheet will be placed. You cannot specify Before if you specify After.
After   Optional Variant. The sheet after which the copied sheet will be placed. You cannot specify After if you specify Before.
После этого пишу следующую конструкцию:
xl.Sheets("Вкладные листы").Copy(,xl.Sheets(2));
И получаю долгое послание от экселя.

Кто-нибудь в курсе, как с таким бороться? Что ему надо передать в качестве параметра After?
1 vS
 
14.02.05
13:23
Может попробовать вместо 2 написать "Вклад...."
или попробуй сделать запись макроса и скопировать лист после.. посмотри что за код будет
2 Дурочкааа 1С
 
14.02.05
13:29
Before = xl.Sheets(2);
xl.Sheets("Вкладные листы").Copy(Before);
3 OFF
 
14.02.05
13:30
Sheets("Вкладные листы").Copy Before:=Sheets(1)?
4 Camino
 
14.02.05
13:44
(1) Пробовал. В макросе пишет примерно как в (3). А бейсиковская нотация в 1С не прокатит..
(2) Попробовал. То же самое: Copy method of Worksheet class failed
5 vS
 
14.02.05
13:59
а если...
Before = xl.Sheets(2).select;
xl.Sheets(2).Copy After = xl.Sheets(3)
6 vS
 
14.02.05
13:59
наверно с пробелом не возьмет...
7 vS
 
14.02.05
14:02
Дим, думаю... чето не выходти, цветок каменный...
8 vS
 
14.02.05
14:20
Worksheets("Sheet3") попробуй
в (0)
9 427
 
14.02.05
14:25
Вечером... Сейчас некогда искать..
10 vS
 
14.02.05
14:26
незнаю
чето даже сам ексель не хочет с 3им синтаксисом работать
11 Дурочкааа 1С
 
14.02.05
14:34
Так часто бывает, что когда синтаксис при работе из 1С неверный и ексель зависает или пишет Copy method of Worksheet class failed, то файл остается не закрытым и, даже, если потом написать правильно, метод все равно не работает. Надо нормально отрыть-закрыть файл (не выполняя глючного метода) и после этого пробовать другой вариант синтаксиса.
12 Camino
 
14.02.05
14:47
(5) Примерно такая конструкция и есть. Копируемый лист активен.
(8) Тоже пробовал. Sheets и Worksheets - полные синонимы
(11) Да вроде бы закрывал и открывал нормально. Инстанс прибивал в диспетчере задач..
13 Camino
 
14.02.05
14:52
Таак. Половину проблемы решил: ёкселю не нравится первый пустой параметр. Попробовал добавить лист перед, а не после - сработало. Теперь буду думать, что туда передать в качестве первого параметра..
14 Camino
 
14.02.05
15:11
Всем спасибо :)
Разобрался. Написал xl.Sheets("Вкладные листы").Copy(null,xl.Sheets(2)); и все заработало.
15 Дурочкааа 1С
 
14.02.05
15:12
Excel = СоздатьОбъект("Excel.Application");
Excel.Displayalerts = 0;//отключить встроенные предупреждения Excel
Excel.Workbooks.Add();//Создать новую книгу
Excel.Sheets.Add();
Excel.Sheets.Add();
Before = Excel.Sheets(2) ;
Excel.Sheets("Лист3").Copy(Before);
Excel.Visible = 1;//1 - открыть приложение

Ничего не ругается, копия Лист3 честно вставилась вторым листом. Что я неправильно делаю?
16 vS
 
14.02.05
15:20
(15) ты делаешь перед, а Дима после...
потому он Camino, а ты не очень :)
17 Кофеин
 
14.02.05
15:47
(15) :) все неправильно
18 Camino
 
14.02.05
15:50
Забыл сказать :)
Все это в v8 делается, ессно. Сначала подумал, что это неважно, а потом вспомнил, что в семерке null нету. Видимо можно будет применить ПустоеЗначение().
19 Дурочкааа 1С
 
14.02.05
15:51
(16) Договаривай, договаривай ...
Cam in - Кулак в
20 Дурочкааа 1С
 
14.02.05
15:57
(18) Чёртов партизан!
Программист всегда исправляет последнюю ошибку.