|
|
|
Копирование листа в 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) Чёртов партизан!
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |