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



Пост 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.
Или нужно дать команду на переключение нотации?


Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 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))





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



Пост N: 46
Зарегистрирован: 05.06.07
ссылка на сообщение  Отправлено: 14.12.07 11:23. Заголовок: Pasha пишет: > ..


Pasha пишет:

 цитата:
> Где найти значения Excel-констант типа xlRight?

Я сам кода-то делал такой файл со всеми значениями констант, могу выслать



Буду признателен. sadstar@mail.ru

А можно их в виде .ch-файла подключать?

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



Пост N: 18
Зарегистрирован: 19.12.06
ссылка на сообщение  Отправлено: 14.12.07 11:55. Заголовок: вот сайтик с констан..


вот сайтик с константами, делаешь из него ch file
http://www.geocities.com/ResearchTriangle/9834/msexcel8.htm

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




Пост N: 667
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 14.12.07 12:09. Заголовок: SADSTAR2 пишет: А ..


SADSTAR2 пишет:

 цитата:
А можно их в виде .ch-файла подключать?





Отправил
Конечно, можно использовать
Правда, клиппер не мог эти файлы обработать - говорил - слишком много команд, переполнение таблицы
Но у харбора все безразмерное, так что скушает и не поперхнется :)

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 377
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 14.12.07 15:01. Заголовок: Pasha пишет: Я сам ..


Pasha пишет:

 цитата:
Я сам кода-то делал такой файл со всеми значениями констант, могу выслать



И мне можно тоже выслать ?
Мой адрес 30195@mail.ru
Спасибо заранее.

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




Пост N: 668
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 14.12.07 17:42. Заголовок: отправил..


отправил

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



Пост 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 таких процессов.

Что я делаю неправильно?



Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост 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


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



Пост N: 41
Зарегистрирован: 27.04.06
ссылка на сообщение  Отправлено: 18.12.07 14:09. Заголовок: oExcel:Quit()..


oExcel:Quit()

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



Пост 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


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



Пост 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.
Результат одинаковый.
В чем дело?
И как с этим у вас?

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



Пост 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

Пока висит сообщение - Эксел виден.
Закрываю сообщение - Эксел закрывается.

И в тоже время Демка работает как положено!

Может играют роль какие-то особенности (ключи) компиляции?



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




Пост N: 669
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 19.12.07 10:05. Заголовок: Насколько я понял, т..


Насколько я понял, ты используешь Harbour

В xHarbour механизм работы с ole такой

Метод :end() у этого класса не существует. При завершении процедуры автоматически
вызывается деструктор обьектов TOleAuto, если это переменные Local или Private
Дестуктор обьетов, но на самого приложениея (Excel). Чтобы завершить приложение,
надо в самой процедуре вызвать метод :Quit()
Процедура разумная и удобная

В каком состоянии это хозяйство в Harbour, я не знаю. Этот класс Гименеса в xHarbour
был очень серьезно переработан, и насколько его функциональность была пересена
обратно в Harbour, я не могу сказать


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



Пост N: 50
Зарегистрирован: 05.06.07
ссылка на сообщение  Отправлено: 20.12.07 01:34. Заголовок: Pasha пишет: Наскол..


Pasha пишет:

 цитата:
Насколько я понял, ты используешь Harbour



Я использую то, что идет в дистрибутиве MiniGUI.
И номера версий соответственно МиниГУЕвые - (1.33, 1.46)
А какой там Харбор идет - не обращал внимания.

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



Пост 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-ричного написания констант?


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





Пост N: 239
Зарегистрирован: 08.04.06
ссылка на сообщение  Отправлено: 14.05.08 14:00. Заголовок: Pasha пишет: у харб..


Pasha пишет:

 цитата:
у харбора все безразмерное


Всё-всё?
И проблема длинных значений индексного ключа, которая была в SIX для Clipper 5.2, в xHarbour отсутствует? А то я пока смелых экспериментов на эту тему в xHarbour'е не делал - в Clipper'е ведь было не отследить - то индекс с длинным ключом работает нормально, а то бац - и базу рушит...

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




Пост N: 909
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 14.05.08 15:27. Заголовок: Речь идет о длинных ..


Речь идет о длинных ключах или ключах переменной длины ?
Если о длинных, то думаю, индек будет работать. Хотя лучше проэксперементировать

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





Пост N: 248
Зарегистрирован: 08.04.06
ссылка на сообщение  Отправлено: 29.06.08 17:53. Заголовок: Подскажите, есть ли ..


Подскажите, есть ли для ActiveSheet возможность указания в качестве Range сразу всей доступной информации, как для ворда oWord:ActiveDocument:Content ? Или что-нибудь типа этого? А если нет, то как проще всего обнаружить правый край информации и нижний её край, чтобы выделить область?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 38
Зарегистрирован: 06.02.07
ссылка на сообщение  Отправлено: 01.07.08 13:10. Заголовок: Я тут в форуме кидал..


Я тут в форуме кидал примерчик (перевод "кучи DBF в кучу XLS с оформлением" - см. сюда) - м.б. поможет?

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





Пост N: 249
Зарегистрирован: 08.04.06
ссылка на сообщение  Отправлено: 05.07.08 16:29. Заголовок: gustow пишет: Я тут..


gustow пишет:

 цитата:
Я тут в форуме кидал примерчик


Там, насколько я понял, нужно открывать DBF-файл, смотреть количество записей... Хотелось бы без этого обойтись...

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

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