Автор | Сообщение |
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 24.03.09 17:25. Заголовок: вопрос по Excel
Всем, привет ! Выделяю строчку в листе: 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
[только новые]
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 24.03.09 18:24. Заголовок: вопрос с Selection ..
вопрос с Selection вроде решил, но теперь надо вставить скопированное в объект Excel открытый как ActiveX что-то типа oAx:Sheets(OemToAnsi("Лист1")):Range("A1"):Select() Sheets в данном случае не катит, надо через OleInvoke(), но как ?
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 25.03.09 19:32. Заголовок: oOwc = TActiveX():..
oOwc = TActiveX():New( oWnd, "OWC11.Spreadsheet" ) hSheet = oOwc:GetProp( "ActiveSheet" ) в общем все свелось к тому, чтобы получить Range как объект, но это не выходит если так OleGetProperty(hSheet, "Range") - получаю неопределенное значение если так OleGetProperty(hSheet, "Range('A1')") - получаю некое число
|
|
|
|
| |
Пост N: 108
Зарегистрирован: 12.06.06
|
|
Отправлено: 21.03.10 10:51. Заголовок: ...вопрос с selection
Напишите , пожалуйста, как решился вопрос с Selection oXls:Sheets(OemToAnsi("Лист1")):Selection():Copy() ??
|
|
|
|
| Администратор
|
Пост N: 1347
Зарегистрирован: 23.05.05
|
|
Отправлено: 22.03.10 09:45. Заголовок: На первый взгляд, на..
На первый взгляд, написано правильно Можно развернуть оператор: oBook := oXls:ActiveWorkBook oSelect := oXls:Selection oSheet := oBook:Sheets(1) oRange := oSheet:Range(oSheet:Rows(n1), oSheet:Rows(n2)) oRange:Select() oSelect:Copy()
|
|
|
|
| Администратор
|
Пост N: 1348
Зарегистрирован: 23.05.05
|
|
Отправлено: 22.03.10 10:08. Заголовок: Причиной ошибки може..
Причиной ошибки может быть то, что какие-то строки объеденены с другими, и запрошенный диапазон невозможно выделить
|
|
|
|
| |
Пост N: 109
Зарегистрирован: 12.06.06
|
|
Отправлено: 22.03.10 10:10. Заголовок: Спасибо ! Теперь с к..
Спасибо ! Теперь с копированием ошибок нет. Но и от Paste() не видно никаких действий. Иначе - в указанном месте вставка не производится, потому что копируется ячейка, которая последней редактировалась в Excelе и она же и вставляется
|
|
|
|
| Администратор
|
Пост N: 1349
Зарегистрирован: 23.05.05
|
|
Отправлено: 22.03.10 10:33. Заголовок: Надо переместиться в..
Надо переместиться в нужную ячейку, и затем выдать Paste Переместиться можно разными способами. К примеру, по имени ячейки oXls:Goto(cName) или выделить область по select затем выдать вставку oSheet:Paste()
|
|
|
|
| |
Пост N: 36
Зарегистрирован: 23.02.06
|
|
Отправлено: 17.05.10 09:10. Заголовок: oExcel:WorkBooks:Open(cFile) - Excel.Application/264 Unknown error: WORKBOOKS
Кто знает как побороть: oExcel:WorkBooks:Open(cFile) // bla bla bla ok oExcel:WorkBooks:Close() oExcel:Quit() oExcel:WorkBooks:Open(cFile1) - с неопределенной вероятностью выдает ошибку - Excel.Application/264 Unknown error: WORKBOOKS То есть первый файл открываю - всегда ок, закрываю, открываю следующий - иногда ок, иногда сабж.
|
|
|
|
| постоянный участник
|
Пост N: 912
Зарегистрирован: 09.10.06
|
|
Отправлено: 17.05.10 11:52. Заголовок: Маленький самодостат..
Маленький самодостаточный пример помог бы вам больше, чем проведение соц.опроса на тему "А кто знает..?". Если вы вызываете Excel:WorkBooks:Open(cFile1) сразу после oExcel:Quit(), то почему вас удивляет возникновение ошибок? Во-вторых метод Close имеет параметры SaveChanges, Filename, RouteWorkbook и для того, чтобы программа не зависила от поведения пользователя я писал бы так oExcel:WorkBooks(cFile):Close(TRUE,, FALSE)
|
|
|
|
| |
Пост N: 34
Зарегистрирован: 17.06.10
|
|
Отправлено: 29.09.10 18:03. Заголовок: В буфер скопирован б..
В буфер скопирован большой фрагмент таблицы. При закрытии книги через oExcel:Workbooks(cFil):Close () появляется запрос об обработке буфера. Как можно запретить убрать этого запроса ?
|
|
|
|
| |
Пост N: 39
Зарегистрирован: 14.03.10
|
|
Отправлено: 08.10.10 14:04. Заголовок: Перед закрытием поме..
Перед закрытием помести в буфер что-нибудь маленькое.
|
|
|
|
|
| |
Пост N: 45
Зарегистрирован: 09.09.11
|
|
Отправлено: 03.11.11 14:42. Заголовок: Петр,можно по подроб..
Петр,можно по подробнее описать ситацию[pre2]` Если вы вызываете Excel:WorkBooks:Open(cFile1) сразу после oExcel:Quit(), то почему вас удивляет возникновение ошибок? Что надо сделать, или какую функцию, команду надо вставить между oExcel:Quit() и WorkBooks:Open(cFile1)?
|
|
|
|
| |
Пост N: 46
Зарегистрирован: 09.09.11
|
|
Отправлено: 24.11.11 14:51. Заголовок: Добрый день, как по ..
Добрый день, как по имени листа определить номер листа? Если в файле 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, "") Ксати предыдущий пост так же актуален.
|
|
|
|
| Администратор
|
Пост N: 2165
Зарегистрирован: 23.05.05
|
|
Отправлено: 25.11.11 10:07. Заголовок: По предыдущуму посту..
По предыдущуму посту. После oExcel:Quit() все надо делать сначала: инициализировать oExcel. и так далее. Это Петр имел в виду полтора года назад. Насчет имени листа: надо сделать цикл по коллекции Sheets и найти интересующее имя.
|
|
|
|
| |
Пост N: 40
Зарегистрирован: 23.02.06
|
|
Отправлено: 25.11.11 12:19. Заголовок: Кто знает, где вообщ..
Кто знает, где вообще можно почитать о работе с сабжем из харбора? В поставляемом примере дается только самый примитив, а если надо там изменить ширину колонки/высоту строки, вставить формулу, нарисовать рамку итд?
|
|
|
|
| Администратор
|
Пост N: 2166
Зарегистрирован: 23.05.05
|
|
Отправлено: 25.11.11 12:28. Заголовок: Харбор предоставляет..
Харбор предоставляет механизм доступа к ole-обьектам и не более. А все остальное отностится непосредственно к Excel. Его и надо изучать. Можно просто почитать help к Excel VBA: vbaxl10.chm, или как он там сейчас называется. Правда, там все не по русски
|
|
|
|
| постоянный участник
|
Пост N: 252
Зарегистрирован: 06.02.07
|
|
Отправлено: 25.11.11 14:05. Заголовок: Snake , вот тут на э..
|
|
|
|
| |
Пост N: 41
Зарегистрирован: 23.02.06
|
|
Отправлено: 17.04.12 10:53. Заголовок: Спасибо! А как скопи..
Спасибо! А как скопипастить ячейку или группу ячеек? пытаюсь так: oAS:Cells( 2, 1 ):Value := 'Test' oAS:Cells(2,1):Select() oAS:Selection:Copy() oAS:Cells(3,3):Select() oAS:Paste() - выдает ошибку на Paste()
|
|
|
|
| |
Пост N: 118
Зарегистрирован: 17.06.10
|
|
Отправлено: 17.04.12 14:27. Заголовок: Вот так попробуй (по..
Вот так попробуй (по край мере с Range проходит) oAS:Cells(2,1):Copy() oAS:Cells(3,3):Select() oAS:Paste()
|
|
|
|
| |
Пост N: 42
Зарегистрирован: 23.02.06
|
|
Отправлено: 18.04.12 10:25. Заголовок: Что-то не проходит н..
Что-то не проходит ни так, ни с 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 - получился какой-то красноватый; а как вычислить нужный? - и как задать цвет фона?
|
|
|
|
| |
Пост N: 43
Зарегистрирован: 23.02.06
|
|
Отправлено: 18.04.12 10:47. Заголовок: Пардон, с цветами са..
Пардон, с цветами сам разобрался - oAS:CELLS(2,1):Interior:Color :=RGB(255,255,0) - а вот с копипастингом ничего не выходит.
|
|
|
|
|
| |
Пост N: 53
Зарегистрирован: 09.09.11
|
|
Отправлено: 18.04.12 10:50. Заголовок: я сделал через цикл ..
я сделал через цикл For I = 1 To 50 oAS:Cells( I, 1 ):Font:Color := I Next потом выбрал нужные и .... на счет Paste oAs:Cells(3,3):Select() oSheet:Paste()
|
|
|
|
| |
Пост N: 54
Зарегистрирован: 09.09.11
|
|
Отправлено: 18.04.12 10:52. Заголовок: oAs:Range(oAs:Cells(..
oAs:Range(oAs:Cells(2,2),oAs:Cells(7,cColumn-1)):Select() oAs:Range(oAs:Cells(2,2),oAs:Cells(7,cColumn-1)):Copy() oSheet_S:=oBook_S :Sheets(1):Select() oBook_S :=oExcel_S:ActiveWorkBook oAs_S :=oExcel_S:ActiveSheet() oSheet_S:=oBook_S :Sheets(1) oAs_S :Cells(14,2):Select() oSheet_S:Paste() Hb_GtInfo(HB_GTI_CLIPBOARDDATA, "") копирование ячеек из одной книги в другую
|
|
|
|
| |
Пост N: 44
Зарегистрирован: 23.02.06
|
|
Отправлено: 24.04.12 10:41. Заголовок: Ура, заработало! Спа..
Ура, заработало! Спасибо! oAS:WorkSheets(1):Select() oAS:Visible := .T. oAS:Cells(1,1):Value :="2" oAS:Cells(1,2):Value :="2" oAS:Cells(1,3):Value :="=SUM(A1:B1)" oAS:Range(oAs:Cells(1,1),oAs:Cells(1,3)):Copy() oAS:ActiveSheet() :Cells(2,1):Select() oAS:ActiveWorkBook :Sheets(1):Paste()
|
|
|
|
| |
Пост N: 45
Зарегистрирован: 23.02.06
|
|
Отправлено: 25.04.12 12:34. Заголовок: - а почему так не пр..
- а почему так не проходит? oAS:WorkSheets(1):Select() oAS:Visible := .T. oAS:Cells(1,1):Value :="2" oAS:Cells(1,2):Value :="2" oAS:Cells(1,3):Value :="=SUM(A1:B1)" oAS:Range(oAs:Cells(1,1),oAs:Cells(1,3)):Copy() oAS:ActiveSheet() :Cells(2,1):Select() /***/ oAs:Range(oAs:Cells(2,1),oAs:Cells(2,3)):Interior: Color := RGB(255,255,0) /***/ oAS:ActiveWorkBook :Sheets(1):Paste() Error Excel.Application:ACTIVEWORKBOOK:SHEETS/3 DISP_E_MEMBERNOTFOUND: PASTE Called from TOLEAUTO:PASTE(0) |
|
|
|
|
| |
Пост N: 60
Зарегистрирован: 03.12.08
|
|
Отправлено: 23.05.12 22:28. Заголовок: Подскажите команды ..
Подскажите команды для работы с таблицей XLS из Harbour 1) Как установить ширину столбца ? (уже разобрался ) 2) Как установить формат данных в ячейке ? EXCELL частенько воспринимает записанное текстовое значение (например : "01417652" ) как число - а нужно принудительно сделать текстовым ! 3) Центрирование внутри ячейки 4) Работа с цветом в ячейках - цвет фона и цвет букв . Может есть готовый список команд и переменных ? Заранее благодарю !
|
|
|
|
| |
Пост N: 46
Зарегистрирован: 23.02.06
|
|
Отправлено: 26.09.12 09:15. Заголовок: Еще пара вопросов.....
Еще пара вопросов... 1. Есть файл и в нем одна таблица - Sheet1. Нужно создать Sheet2 и скопировать туда все содержимое Sheet1, сохраняя все форматы! Вручную это делается просто - в Sheet1 жмем Ctrl-A, переходим в Sheet2, делаем Paste и вуаля. А как это сделать программно? 2. Как программно запустить печать из Excel? И/или сохранить файл?
|
|
|
|
| Администратор
|
Пост N: 2490
Зарегистрирован: 23.05.05
|
|
Отправлено: 27.09.12 09:56. Заголовок: Скопировать лист nSh..
Скопировать лист nSheet1 -> nSheet2: oSheets := oBook:Sheets oSheet := oSheets:Item(nSheet2) oSheet:Select() oSheet:Copy( oSheets:Item(nSheet1) ) Печать из Excel: oSheet:PrintOut() Сохранить книгу: oBook:SaveAs( cFileName )
|
|
|
|
| |
Пост N: 47
Зарегистрирован: 23.02.06
|
|
Отправлено: 27.09.12 11:11. Заголовок: Спасибо! Копирование..
Спасибо! Копирование работает, но не совсем так, как надо. Мне надо перед копированием создать новый лист, поэтому в начале вставил oBook:WorkSheets():Add() Результат - Sheet1(2) - копия Sheet1, Sheet2 - пустой и Sheet1 - оригинал А хотелось бы - Sheet1 - оригинал, Sheet2 - копия Sheet1, в таком порядке. Ну там не обязательно такое иия, можно не Sheet2, а Sheet1(2), но главное чтобы копия добавлялась после оригинала. Таких операций будет несколько, и хорошо бы чтоб листы шли в порядке возрастания номера.
|
|
|
|
| Администратор
|
Пост N: 2491
Зарегистрирован: 23.05.05
|
|
Отправлено: 27.09.12 11:52. Заголовок: Вот описание метода ..
Вот описание метода Add для коллекции Sheets: Creates a new worksheet, chart, or macro sheet. The new worksheet becomes the active sheet. expression.Add(Before, After, Count, Type) expression Required. An expression that returns one of the above objects. Before Optional Variant. An object that specifies the sheet before which the new sheet is added. After Optional Variant. An object that specifies the sheet after which the new sheet is added. Count Optional Variant. The number of sheets to be added. The default value is one. Type Optional Variant. Specifies the sheet type. Can be one of the following XlSheetType constants: xlWorksheet, xlChart, xlExcel4MacroSheet, or xlExcel4IntlMacroSheet. If you are inserting a sheet based on an existing template, specify the path to the template. The default value is xlWorksheet. Remarks If Before and After are both omitted, the new sheet is inserted before the active sheet. т.е, для создания 2-го листа после 1-го надо вызвать: oSheets:Add(, oSheets:Item(1))
|
|
|
|
| |
Пост N: 48
Зарегистрирован: 23.02.06
|
|
Отправлено: 28.09.12 09:20. Заголовок: Что-то не так... oS..
Что-то не так... oSheets:Add(, oSheets:Item(1)) ========== Error Excel.Application:WORKSHEETS/14 DISP_E_BADPARAMCOUNT: ADD :-( Может есть какой-то способ менять листы местами?
|
|
|
|
|
| Администратор
|
Пост N: 2492
Зарегистрирован: 23.05.05
|
|
Отправлено: 28.09.12 15:22. Заголовок: Snake пишет: DISP_..
Snake пишет: цитата: | DISP_E_BADPARAMCOUNT: ADD |
| Неверное количество параметров для метода Add Это тот случай, когда поведение метода отличается от его описания, а почему - непонятно. Эксперементально определяется, что метод Add принимает не более 1-го параметра, т.е. можно указать только Before. Так же работает метод Move. У него тоже есть 2 параметра - Before и After, но понимает но только 1-й. И толку с него столько же, сколько и с Add. Если вызывать этот метод через макросы экселя, то он работает. Но там указываются ключевые параметры, а у нас позиционные.
|
|
|
|
| |
Пост N: 62
Зарегистрирован: 19.05.05
|
|
Отправлено: 29.09.12 21:53. Заголовок: При создании xls соз..
При создании xls создавай сразу два листа, а потом добавляй по мере надобности перед последним листом, последний лист можно удалить после окончания заполнения, а листы переименовать так, как хочешь
|
|
|
|
| |
Пост N: 49
Зарегистрирован: 23.02.06
|
|
Отправлено: 02.10.12 09:29. Заголовок: еще вопрос: oAS:She..
еще вопрос: oAS:Sheets:Item(4):Delete() - выводит запрос на подтверждение удаления. Как сделать так, чтобы лист удалялся без подтверждения?
|
|
|
|
| |
Пост N: 2507
Зарегистрирован: 17.05.05
|
|
Отправлено: 02.10.12 09:49. Заголовок: Snake http://www.sq..
|
|
|
|
| |
Пост N: 50
Зарегистрирован: 23.02.06
|
|
Отправлено: 02.10.12 10:24. Заголовок: Спасибо... но теперь..
Спасибо... но теперь бы это в Харбор перевести...
|
|
|
|
| |
Пост N: 2509
Зарегистрирован: 17.05.05
|
|
Отправлено: 02.10.12 10:32. Заголовок: oAS:DisplayAlerts:=...
oAS:DisplayAlerts:=.f.
|
|
|
|
| постоянный участник
|
Пост N: 319
Зарегистрирован: 13.10.05
|
|
Отправлено: 02.10.12 15:07. Заголовок: xXarbour 1. Проблема..
xXarbour 1. Проблема на ровном месте. Потребовалось к существующим отчетам Excel добавить еще один. Отчет, всю работу по подготовке к нему, формирую в отдельном файле ( пробовал и в отдельной функции существующего файла). ExcelApl переменная (Private) объявлена в головном файле и инициализируется как обычно.При открытии файла шаблона в данной строке возникает ошибка. цитата: | ExcelApl:WorkBooks:Add(Par1+"PIC\ITOG.xls") |
| Если меняю данный шаблон на другой, работающий в другой функции, - все равно ошибка. Т.е что-то непонятное .
|
|
|
|
| |
Пост N: 2511
Зарегистрирован: 17.05.05
|
|
Отправлено: 02.10.12 15:57. Заголовок: Vlad04 а так ? Exce..
Vlad04 а так ? ExcelApl:WorkBooks:Open(Par1+"PIC\ITOG.xls")
|
|
|
|
| постоянный участник
|
Пост N: 320
Зарегистрирован: 13.10.05
|
|
Отправлено: 02.10.12 18:57. Заголовок: ТО же самое. Опыты п..
ТО же самое. Опыты продолжаются
|
|
|
|
| |
Пост N: 2512
Зарегистрирован: 17.05.05
|
|
Отправлено: 02.10.12 21:12. Заголовок: Vlad04 PAR1+"PI..
Vlad04 PAR1+"PIC\ITOG.xls" это что ? Путь доступа к файлу ? Возможно что то не то в PAR1
|
|
|
|
|
| |
Пост N: 2513
Зарегистрирован: 17.05.05
|
|
Отправлено: 02.10.12 21:36. Заголовок: Vlad04 пишет: xXarb..
Vlad04 пишет: Сразу не обратил внимания. У меня тоже самое работает в Harbour 2.0.0
|
|
|
|
| постоянный участник
|
Пост N: 321
Зарегистрирован: 13.10.05
|
|
Отправлено: 03.10.12 13:11. Заголовок: Поместил ExcelApl:..
Поместил цитата: | ExcelApl:WorkBooks:Open(Par1+"PIC\ITOG.xls") |
| в функцию , где инициализируется ExcelApl ( что не совсем удобно) и все заработало. Повидимому что-то на системном уровне xXarbour - предыдущие отчеты работают, а этот требует уже особого внимания. цитата: | PAR1+"PIC\ITOG.xls" это что ? Путь доступа к файлу ? |
| Да , это путь к шаблону Спасибо за участие. Как нибудь на xXarbour 1.2.1 проверю
|
|
|
|
| |
Пост N: 143
Зарегистрирован: 12.06.06
|
|
Отправлено: 28.06.23 13:39. Заголовок: i3t4j6 пишет: ....в..
i3t4j6 пишет: цитата: | ....в указанном месте вставка не производится, потому что копируется ячейка, которая последней редактировалась в Excelе и она же и вставляется |
| Pasha пишет: цитата: | Надо переместиться в нужную ячейку, и затем выдать Paste |
| Есть файл-шаблон и в нем таблица - шапка и одна строка. Нужно добавить несколько строк со сдвигом вниз. oSheet:Range(oSheet:Cells(19,2),oSheet:Cells(19,64)):Select() oSheet:Range(oSheet:Cells(19,2),oSheet:Cells(19,64)):Copy() oSheet:Cells( 19, 2 ):Select() oSheet:paste() Если делаю так, то строка не добавляется , а информация пишется поверх существующей ?
|
|
|
|
| Администратор
|
Пост N: 4109
Зарегистрирован: 23.05.05
|
|
Отправлено: 28.06.23 15:16. Заголовок: Наверное надо сначал..
Наверное надо сначала вставить пустую строку: oSheet:Rows(19):Insert(xlDown)
|
|
|
|
| |
Пост N: 144
Зарегистрирован: 12.06.06
|
|
Отправлено: 28.06.23 17:11. Заголовок: Спасибо !!!..
Спасибо !!!
|
|
|
Ответов - 46
, стр:
1
2
3
All
[только новые]
|
|