Форум » [x]Harbour » вопрос по Excel » Ответить

вопрос по Excel

fil: Всем, привет ! Выделяю строчку в листе: oXls:Sheets(OemToAnsi("Лист1")):Range("B"+ltrim(str(nn+st))+":F"+ltrim(str(nn+st)) ):Select() а вот копирование выделенного в clipboard дает ошибку - неправильно указана принадлежность объекта Selection() oXls:Sheets(OemToAnsi("Лист1")):Selection():Copy() ??

Ответов - 46, стр: 1 2 3 All

fil: вопрос с Selection вроде решил, но теперь надо вставить скопированное в объект Excel открытый как ActiveX что-то типа oAx:Sheets(OemToAnsi("Лист1")):Range("A1"):Select() Sheets в данном случае не катит, надо через OleInvoke(), но как ?

fil: oOwc = TActiveX():New( oWnd, "OWC11.Spreadsheet" ) hSheet = oOwc:GetProp( "ActiveSheet" ) в общем все свелось к тому, чтобы получить Range как объект, но это не выходит если так OleGetProperty(hSheet, "Range") - получаю неопределенное значение если так OleGetProperty(hSheet, "Range('A1')") - получаю некое число

i3t4j6: Напишите , пожалуйста, как решился вопрос с Selection oXls:Sheets(OemToAnsi("Лист1")):Selection():Copy() ??


Pasha: На первый взгляд, написано правильно Можно развернуть оператор: oBook := oXls:ActiveWorkBook oSelect := oXls:Selection oSheet := oBook:Sheets(1) oRange := oSheet:Range(oSheet:Rows(n1), oSheet:Rows(n2)) oRange:Select() oSelect:Copy()

Pasha: Причиной ошибки может быть то, что какие-то строки объеденены с другими, и запрошенный диапазон невозможно выделить

i3t4j6: Спасибо ! Теперь с копированием ошибок нет. Но и от Paste() не видно никаких действий. Иначе - в указанном месте вставка не производится, потому что копируется ячейка, которая последней редактировалась в Excelе и она же и вставляется

Pasha: Надо переместиться в нужную ячейку, и затем выдать Paste Переместиться можно разными способами. К примеру, по имени ячейки oXls:Goto(cName) или выделить область по select затем выдать вставку oSheet:Paste()

Snake: Кто знает как побороть: oExcel:WorkBooks:Open(cFile) // bla bla bla ok oExcel:WorkBooks:Close() oExcel:Quit() oExcel:WorkBooks:Open(cFile1) - с неопределенной вероятностью выдает ошибку - Excel.Application/264 Unknown error: WORKBOOKS То есть первый файл открываю - всегда ок, закрываю, открываю следующий - иногда ок, иногда сабж.

Петр: Маленький самодостаточный пример помог бы вам больше, чем проведение соц.опроса на тему "А кто знает..?". Если вы вызываете Excel:WorkBooks:Open(cFile1) сразу после oExcel:Quit(), то почему вас удивляет возникновение ошибок? Во-вторых метод Close имеет параметры SaveChanges, Filename, RouteWorkbook и для того, чтобы программа не зависила от поведения пользователя я писал бы так oExcel:WorkBooks(cFile):Close(TRUE,, FALSE)

fil: В буфер скопирован большой фрагмент таблицы. При закрытии книги через oExcel:Workbooks(cFil):Close () появляется запрос об обработке буфера. Как можно запретить убрать этого запроса ?

Наиль: Перед закрытием помести в буфер что-нибудь маленькое.

Oskar_AAA: Петр,можно по подробнее описать ситацию[pre2][/pre2] Если вы вызываете Excel:WorkBooks:Open(cFile1) сразу после oExcel:Quit(), то почему вас удивляет возникновение ошибок? Что надо сделать, или какую функцию, команду надо вставить между oExcel:Quit() и WorkBooks:Open(cFile1)?

Oskar_AAA: Добрый день, как по имени листа определить номер листа? Если в файле Excel изменить порядок листов, то из своей программы я немогу вставить буфер обмена на НУЖНЫЙ лист. Фрагмент кода oSheet_S:=oBook_S :Sheets(22):Select() oBook_S :=oExcel_S:ActiveWorkBook oAs_S :=oExcel_S:ActiveSheet() oSheet_S:=oBook_S :Sheets(22) oAs_S :Cells(88,3):Select() oSheet_S:Paste() Hb_GtInfo(HB_GTI_CLIPBOARDDATA, "") Ксати предыдущий пост так же актуален.

Pasha: По предыдущуму посту. После oExcel:Quit() все надо делать сначала: инициализировать oExcel. и так далее. Это Петр имел в виду полтора года назад. Насчет имени листа: надо сделать цикл по коллекции Sheets и найти интересующее имя.

Snake: Кто знает, где вообще можно почитать о работе с сабжем из харбора? В поставляемом примере дается только самый примитив, а если надо там изменить ширину колонки/высоту строки, вставить формулу, нарисовать рамку итд?

Pasha: Харбор предоставляет механизм доступа к ole-обьектам и не более. А все остальное отностится непосредственно к Excel. Его и надо изучать. Можно просто почитать help к Excel VBA: vbaxl10.chm, или как он там сейчас называется. Правда, там все не по русски

gustow: Snake , вот тут на этом форуме, к примеру, кое-что (http://clipper.borda.ru/?1-4-0-00000259-000-0-0-1274882100) или (http://clipper.borda.ru/?1-1-0-00000136-000-20-0#014) (а еще - "поиск"->"excel")

Snake: Спасибо! А как скопипастить ячейку или группу ячеек? пытаюсь так: oAS:Cells( 2, 1 ):Value := 'Test' oAS:Cells(2,1):Select() oAS:Selection:Copy() oAS:Cells(3,3):Select() oAS:Paste() - выдает ошибку на Paste()

fil: Вот так попробуй (по край мере с Range проходит) oAS:Cells(2,1):Copy() oAS:Cells(3,3):Select() oAS:Paste()

Snake: Что-то не проходит ни так, ни с RANGE: oAS:RANGE(oAS:Cells(2,1),oAS:Cells(2,1)) :Copy() oAS:RANGE(oAS:Cells(3,3), oAS:Cells(3,3)) :Select() oAS:Paste() ...а еще может кто подскажет как цвет задается? для шрифта задал наобум - oAS:Cells( 2, 1 ):Font:Color := 85 - получился какой-то красноватый; а как вычислить нужный? - и как задать цвет фона?



полная версия страницы