Автор | Сообщение |
|
| |
Пост N: 45
Зарегистрирован: 05.06.07
|
|
Отправлено: 13.12.07 02:49. Заголовок: Команды Excel
Где можно найти полный перечень команд Excel, доступных из Харбор через TOleAuto(). В примерах нужных вариантов не нашел. Например Как получить номер строки/столбца текущей ячейки? Как получить номер текущей страницы? Как выбрать нужную страницу? Как управлять рамками? Где найти значения Excel-констант типа xlRight? И т.п. Из доступных источников есть справка по MS Excel Visual Basic из дистрибутива Excel. Думаю что там есть все команды. Но как их преобразовать в Харбор? Например это With Worksheets("Sheet1").Range("B2").Borders(xlBottom) .LineStyle = xlBorderLineStyleContinuous .Weight = xlThin .ColorIndex = 3 End With P.S. Вроде не понимает нотации R1C1. //oSheet:Range('R16C2:R16C8'):Font:Bold := .T. oSheet:Range('B16:H16'):Font:Bold := .T. Или нужно дать команду на переключение нотации?
|
|
|
Ответов - 42
, стр:
1
2
3
All
[только новые]
|
|
|
| Администратор
|
Пост N: 666
Зарегистрирован: 23.05.05
|
|
Отправлено: 14.12.07 09:56. Заголовок: > Где можно найт..
> Где можно найти полный перечень команд Excel, доступных из Харбор через TOleAuto(). В документе надо включить запись макросов, проделать действия и посмотреть что записалось > Как получить номер строки/столбца текущей ячейки? Selection:Address > Как получить номер текущей страницы? > Как выбрать нужную страницу? Скажи, как это сделать в экселе, и я скажу как в харборе > Как управлять рамками? Я использую такую функцию: Static func xlCellBorder(oCell, nNSEW) oCell:Borders(nNSEW):LineStyle := 1 // xlContinuous oCell:Borders(nNSEW):Weight := 2 // xlThin // oBorder:Set('ColorIndex', -4105) // xlAutomatic Return nil Пример oRange := oSheet:Cells( nRow, nCol ) xlCellBorder(oRange, 7) // left xlCellBorder(oRange, 8) // top xlCellBorder(oRange, 9) // bottom xlCellBorder(oRange, 10) // right > Где найти значения Excel-констант типа xlRight? Я сам кода-то делал такой файл со всеми значениями констант, могу выслать > Но как их преобразовать в Харбор? Например это With Worksheets("Sheet1").Range("B2").Borders(xlBottom) .LineStyle = xlBorderLineStyleContinuous .Weight = xlThin .ColorIndex = 3 End With oBorder := oExcel:Worksheets(1).Range(2,2).Borders(-4107) затем смотри мою функцию > Вроде не понимает нотации R1C1. //oSheet:Range('R16C2:R16C8'):Font:Bold := .T. oSheet:Range(oSheet:Cells(nRow1, nCol1), oSheet:Cells(nRow2, nCol2))
|
|
|
|
| |
Пост N: 46
Зарегистрирован: 05.06.07
|
|
Отправлено: 14.12.07 11:23. Заголовок: Pasha пишет: > ..
Pasha пишет: цитата: | > Где найти значения Excel-констант типа xlRight? Я сам кода-то делал такой файл со всеми значениями констант, могу выслать |
| Буду признателен. sadstar@mail.ru А можно их в виде .ch-файла подключать?
|
|
|
|
| |
Пост N: 18
Зарегистрирован: 19.12.06
|
|
Отправлено: 14.12.07 11:55. Заголовок: вот сайтик с констан..
|
|
|
|
| Администратор
|
Пост N: 667
Зарегистрирован: 23.05.05
|
|
Отправлено: 14.12.07 12:09. Заголовок: SADSTAR2 пишет: А ..
SADSTAR2 пишет: цитата: | А можно их в виде .ch-файла подключать? |
| Отправил Конечно, можно использовать Правда, клиппер не мог эти файлы обработать - говорил - слишком много команд, переполнение таблицы Но у харбора все безразмерное, так что скушает и не поперхнется :)
|
|
|
|
| постоянный участник
|
Пост N: 377
Зарегистрирован: 12.09.06
|
|
Отправлено: 14.12.07 15:01. Заголовок: Pasha пишет: Я сам ..
Pasha пишет: цитата: | Я сам кода-то делал такой файл со всеми значениями констант, могу выслать |
| И мне можно тоже выслать ? Мой адрес 30195@mail.ru Спасибо заранее.
|
|
|
|
| Администратор
|
Пост N: 668
Зарегистрирован: 23.05.05
|
|
Отправлено: 14.12.07 17:42. Заголовок: отправил..
отправил
|
|
|
|
| |
Пост N: 47
Зарегистрирован: 05.06.07
|
|
Отправлено: 18.12.07 09:48. Заголовок: Что я делаю неправильно?
Интересный облом. Эксел остается в памяти и держит открытый файл. //================================================================ Static Function PrintAkt2(arCom) LOCAL oExcel, oBook, oSheet, oRange, cFile:=ApplicPath+"Akt2.xls" .... .... .... oExcel := TOleAuto():New( "Excel.Application" ) oExcel:Visible := .T. oExcel:Workbooks:Open(cFile) .... .... oRange:End() oSheet:End() oBook:End() oExcel:End() Return Nil Эксел остается для просмотра и дальнейшей работы потом закрывается вручную. А в памяти висит процесс excel.exe и пока его не грохнешь - Akt2.xls нельзя редактировать (только копию). К тому моменту когда я обратил на это внимание в памяти висело штук 50 таких процессов. Что я делаю неправильно?
|
|
|
|
| постоянный участник
|
Пост N: 380
Зарегистрирован: 12.09.06
|
|
Отправлено: 18.12.07 11:41. Заголовок: Надо при открытии фа..
Надо при открытии файла Akt2.xls проверять открыт ли он ужу или нет ! Если уже открыт то .... function xdtFileCanBeWritten( cFile ) // -> lOk // static nErrNoFile := 2 // File not found // local nFile := fopen( cFile, FO_EXCLUSIVE ) // if ( nFile == F_ERROR ) return ( ferror() == nErrNoFile ) endif // fclose( nFile ) // return .t. // // end procedure xdtFileCanBeWritten
|
|
|
|
| |
Пост N: 41
Зарегистрирован: 27.04.06
|
|
Отправлено: 18.12.07 14:09. Заголовок: oExcel:Quit()..
oExcel:Quit()
|
|
|
|
| |
Пост N: 42
Зарегистрирован: 27.04.06
|
|
Отправлено: 18.12.07 14:16. Заголовок: TRY oExcel ..
TRY oExcel := GetActiveObject( "Excel.Application" ) CATCH TRY oExcel := CreateObject( "Excel.Application" ) CATCH Alert( "ERROR! Excel not avialable. [" + Ole2TxtError()+ "]" ) RETURN END END
|
|
|
|
| |
Пост N: 48
Зарегистрирован: 05.06.07
|
|
Отправлено: 19.12.07 03:13. Заголовок: Чистый эксперимент
Чистый эксперимент ... oWord := TOleAuto():New( "Word.Application" ) oWord:Visible := .T. oWord:end() oExcel := TOleAuto():New( "Excel.Application" ) oExcel:Visible := .T. oExcel:End() ... Ворд и Эксел появляются открытыми. Закрываю вызывающую их Харбор-программу Закрываю вручную Ворд и Эксел. В памяти Ворд-процесс исчезает, Эксел-процесс остается!!! Проверял под WinXP в Оффисе-97 и -2003 и под Win98 в Оффисе-97. Результат одинаковый. В чем дело? И как с этим у вас?
|
|
|
|
|
| |
Пост N: 49
Зарегистрирован: 05.06.07
|
|
Отправлено: 19.12.07 07:28. Заголовок: Новые результаты
Новые результаты Перекомпилил "Чистый эксперимент" в версию 46 (было в версии 33) Еще интереснее стало. 1. Выпадает на RunTime-ошибку при выполнении :end() 2. Глушу все :end() Ворд остается открытым, Эксел сам закрывается (но и в памяти процесс тоже исчезает) 3. Добавляю msgbox('Excel') чтоб приостановить и посмотреть ... oExcel := TOleAuto():New( "Excel.Application" ) oExcel:Visible := .T. msgbox('Excel') ... Return Nil Пока висит сообщение - Эксел виден. Закрываю сообщение - Эксел закрывается. И в тоже время Демка работает как положено! Может играют роль какие-то особенности (ключи) компиляции?
|
|
|
|
| Администратор
|
Пост N: 669
Зарегистрирован: 23.05.05
|
|
Отправлено: 19.12.07 10:05. Заголовок: Насколько я понял, т..
Насколько я понял, ты используешь Harbour В xHarbour механизм работы с ole такой Метод :end() у этого класса не существует. При завершении процедуры автоматически вызывается деструктор обьектов TOleAuto, если это переменные Local или Private Дестуктор обьетов, но на самого приложениея (Excel). Чтобы завершить приложение, надо в самой процедуре вызвать метод :Quit() Процедура разумная и удобная В каком состоянии это хозяйство в Harbour, я не знаю. Этот класс Гименеса в xHarbour был очень серьезно переработан, и насколько его функциональность была пересена обратно в Harbour, я не могу сказать
|
|
|
|
| |
Пост N: 50
Зарегистрирован: 05.06.07
|
|
Отправлено: 20.12.07 01:34. Заголовок: Pasha пишет: Наскол..
Pasha пишет: цитата: | Насколько я понял, ты используешь Harbour |
| Я использую то, что идет в дистрибутиве MiniGUI. И номера версий соответственно МиниГУЕвые - (1.33, 1.46) А какой там Харбор идет - не обращал внимания.
|
|
|
|
| |
Пост N: 53
Зарегистрирован: 05.06.07
|
|
Отправлено: 20.03.08 03:28. Заголовок: Возник вопрос
Вернулся к работе с Ехселем после долгого перерыва нарвался на очередную непонятку Почему Харбор из поставки МиниГУИ 1.46 (да и другие тоже) правильно понимает это excel8.ch #define xlHAlignCenter -4108 #define xlHAlignCenterAcrossSelection 7 #define xlHAlignDistributed -4117 #define xlHAlignFill 5 #define xlHAlignGeneral 1 #define xlHAlignJustify -4130 #define xlHAlignLeft -4131 #define xlHAlignRight -4152 и неправильно понимает это Excel97.ch #define xlHAlignCenter 0xffffeff4 #define xlHAlignCenterAcrossSelection 7 #define xlHAlignDistributed 0xffffefeb #define xlHAlignFill 5 #define xlHAlignGeneral 1 #define xlHAlignJustify 0xffffefde #define xlHAlignLeft 0xffffefdd #define xlHAlignRight 0xffffefc8 Т.е. не понимает 16-ричного написания констант?
|
|
|
|
| |
Пост N: 239
Зарегистрирован: 08.04.06
|
|
Отправлено: 14.05.08 14:00. Заголовок: Pasha пишет: у харб..
Pasha пишет: цитата: | у харбора все безразмерное |
| Всё-всё? И проблема длинных значений индексного ключа, которая была в SIX для Clipper 5.2, в xHarbour отсутствует? А то я пока смелых экспериментов на эту тему в xHarbour'е не делал - в Clipper'е ведь было не отследить - то индекс с длинным ключом работает нормально, а то бац - и базу рушит...
|
|
|
|
| Администратор
|
Пост N: 909
Зарегистрирован: 23.05.05
|
|
Отправлено: 14.05.08 15:27. Заголовок: Речь идет о длинных ..
Речь идет о длинных ключах или ключах переменной длины ? Если о длинных, то думаю, индек будет работать. Хотя лучше проэксперементировать
|
|
|
|
| |
Пост N: 248
Зарегистрирован: 08.04.06
|
|
Отправлено: 29.06.08 17:53. Заголовок: Подскажите, есть ли ..
Подскажите, есть ли для ActiveSheet возможность указания в качестве Range сразу всей доступной информации, как для ворда oWord:ActiveDocument:Content ? Или что-нибудь типа этого? А если нет, то как проще всего обнаружить правый край информации и нижний её край, чтобы выделить область?
|
|
|
|
| постоянный участник
|
Пост N: 38
Зарегистрирован: 06.02.07
|
|
Отправлено: 01.07.08 13:10. Заголовок: Я тут в форуме кидал..
Я тут в форуме кидал примерчик (перевод "кучи DBF в кучу XLS с оформлением" - см. сюда) - м.б. поможет?
|
|
|
|
| |
Пост N: 249
Зарегистрирован: 08.04.06
|
|
Отправлено: 05.07.08 16:29. Заголовок: gustow пишет: Я тут..
gustow пишет: цитата: | Я тут в форуме кидал примерчик |
| Там, насколько я понял, нужно открывать DBF-файл, смотреть количество записей... Хотелось бы без этого обойтись...
|
|
|
Ответов - 42
, стр:
1
2
3
All
[только новые]
|
|