On-line: PSP, гостей 2. Всего: 3 [подробнее..]
АвторСообщение



Пост N: 4
Зарегистрирован: 08.02.11
ссылка на сообщение  Отправлено: 16.03.11 09:57. Заголовок: Скопировать лист Экселя?


Может глаз замылился
Хочу скопировать лист из файла в новый
 
oExcel:Workbooks:Open(cFile)
oBook:=oExcel:ActiveWorkbook()
oBook:Activate()
oBook:Worksheets(1):Activate()
oSheet := oBook:Worksheets(1)
oSheet:Copy()
oWorkBookN:=oExcel:WorkBooks:Add() //новая пустая книга
oSheetN:=oWorkBookN:Worksheets(1)
oSheetN:Paste() // ???

сообщение об ошибке
Error 1553980/14 E_OUTOFMEMORY: PASTE 
Called from TOLEAUTO:PASTE(0)
Called from PRINTAKT2(513)
...

но при этом имею в Экселе
открытую книгу исходного файла
Книга1 с нужной копией страницы
Книга2 пустая

сделано в 46-й версии МиниГУИ - программа старая нужно изменить/добавить

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 10 [только новые]


Администратор




Пост N: 1848
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 16.03.11 10:27. Заголовок: Это ошибка не харбор..


Это ошибка не харбора и не hmg. Excel выполняет команду Paste, возникает out of memory, и генерируется ошибка в приложении hmg
А если сделать копипаст в экселе, ошибка есть ?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 36
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 16.03.11 11:32. Заголовок: лови


лови разгадку

oExcel:Workbooks:Open(cFile)
oBook:=oExcel:ActiveWorkbook()
oBook:Activate()
oBook:Worksheets(1):Activate()
oSheet := oBook:Worksheets(1)
oSheet:Cells:Select()
oExcel:Selection:Copy()

oWorkBookN:=oExcel:WorkBooks:Add() //новая пустая книга
oSheetN:=oWorkBookN:Worksheets(1)
oSheetN:Paste()



Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 5
Зарегистрирован: 08.02.11
ссылка на сообщение  Отправлено: 17.03.11 07:21. Заголовок: Что-то не помогает. ..


Что-то не помогает.
Лист в ту же книгу копирует без проблем
 
oSheet:Cells:Select()
oExcel:Selection:Copy()
//oSheet2 := oBook:Worksheets(2)
//oSheet2:Paste()
oWorkBookN:=oExcel:WorkBooks:Add() //новая пустая книга
oSheetN:=oWorkBookN:Worksheets(1)
oSheetN:Paste() // ???

а в другую - ошибка. Уже другая.
Error 1552500/3 DISP_E_MEMBERNOTFOUND: PASTE 
Called from TOLEAUTO:PASTE(0)
Called from PRINTAKT2(512)


Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1849
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 17.03.11 08:37. Заголовок: SADSTAR4 пишет: а в..


SADSTAR4 пишет:

 цитата:
а в другую - ошибка. Уже другая.



Может, в новой книге надо сначала создать пустой лист ?

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 90
Зарегистрирован: 17.06.10
ссылка на сообщение  Отправлено: 17.03.11 08:38. Заголовок: Попробуй не лист коп..


Попробуй не лист копировать, а RANGE в лист новой книги

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 37
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 17.03.11 12:55. Заголовок: проделай руками


Проделай все руками и запиши макрос, посмотри как надо.
у меня получилось так

Cells.Select
Selection.Copy
Workbooks.Add
ActiveSheet.Paste

соответствующий код в харбуре

oSheet:Cells:Select()
oExcel:Selection:Copy()
oWorkBookN:=oExcel:WorkBooks:Add()
oWorkBookN:ActiveSheet:Paste()

но и предыдущий пример работал без ругани на офисе 2010 и последней сборке минигуи
как предлагает fil - тоже выход, если диаgазон известен , проще использовать range

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 6
Зарегистрирован: 08.02.11
ссылка на сообщение  Отправлено: 18.03.11 06:46. Заголовок: нашел возможность уб..


нашел возможность убрать ошибку, но не понял причину.
реально у меня была еще одна строка - колич.листов в новой книге
	oSheet:Cells:Select() 
oExcel:Selection:Copy()
oExcel:SheetsInNewWorkbook := 1 //количество листов в новой книге
oWorkBookN:=oExcel:WorkBooks:Add() //новая пустая книга
oSheetN:=oWorkBookN:Worksheets(1)
oSheetN:Paste() // ???

вылетало на ошибку хотя новая книга с одним листом создавалась.
убрал эту строку - не вылетает.

P.S.
окончательный код такой
	oExcel:Workbooks:Open(cFile) 
oBook:=oExcel:ActiveWorkbook()
oBook:Activate()
oBook:Worksheets(1):Activate()
oSheet := oBook:Worksheets(1)
oSheet:Cells:Copy()

oWorkBookN:=oExcel:WorkBooks:Add() //новая пустая книга
oSheetN:=oWorkBookN:Worksheets(1)
oSheetN:Paste()

oSheet:Range("A1"):Copy() //для очистки клипборда чтобы не всплывал диалог ВклипбордеБольшойОбъем
oBook:Saved:=.t. //чтобы не всплывал диалог СохранитьИзменения
oBook:Close()
oSheetN:Activate()
...
работа с листом
...
oExcel:Visible := .T.



Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 38
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 18.03.11 09:23. Заголовок: Попробуй так ...



Вместо этого :
SADSTAR4 пишет:

 цитата:
oSheet:Range("A1"):Copy() //для очистки клипборда чтобы не всплывал диалог ВклипбордеБольшойОбъем
oBook:Saved:=.t. //чтобы не всплывал диалог СохранитьИзменения



Попробуй так:
oExcel:Set( "DisplayAlerts", .F. )

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1850
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 18.03.11 10:50. Заголовок: Haz пишет: Попробуй..


Haz пишет:

 цитата:
Попробуй так:
oExcel:Set( "DisplayAlerts", .F. )



еще можно так:

oExcel:CutCopyMode := .f.

при этом снимается выделение ячеек

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 7
Зарегистрирован: 08.02.11
ссылка на сообщение  Отправлено: 21.03.11 04:48. Заголовок: еще более окончатель..


еще более окончательный код после всех советов и "Бритвы Оккама"
 
oExcel:Workbooks:Open(cFile)
oBook:=oExcel:ActiveWorkbook()
oBook:Worksheets(1):Cells:Copy()

oBookN:=oExcel:WorkBooks:Add() //новая пустая книга
oSheet:=oBookN:Worksheets(1)
oSheet:Paste()

t:=oExcel:Get( "DisplayAlerts") //временно сохранить текущую настройку
oExcel:Set( "DisplayAlerts", .F. )
oBook:Close()
oExcel:Set( "DisplayAlerts", t ) //восстановить предыдущую настройку
oSheet:Activate()
...
работа с листом
...
oExcel:Visible := .T.


Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 105
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет