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




Пост N: 2372
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 21.05.12 16:52. Заголовок: Снова EXCEL


Ранее с Excel из Harbour ни когда не работал.
Поставили тут задачу.
У некоторых поставщиков есть определенные формы заказов.
Набраны они в Excel. Сейчас народ руками заполняет эти формы
и шлет по электронке поставщикам.
Задача сводится к тому что бы в этих формах находить
нужные коды товара и в нужной ячейке проставлять заказ.
Может ткнет кто носом с чего начать что бы не напороться на грабли.
Спасибо
Сами формы тут http://zalil.ru/33279066

Спасибо: 0 
Профиль
Ответов - 300 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All [только новые]


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




Пост N: 518
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 05.04.15 14:40. Заголовок: Dima пишет: Или так..


Dima пишет:

 цитата:
Или так


Можно еще папку Program Files просканировать и по циферкам в пути понять версию
\Program Files\Microsoft Office\Office15

Спасибо: 0 
Профиль
Dima
администратор




Пост N: 4663
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 05.04.15 14:42. Заголовок: Да и это пожалуй сам..


Да и это пожалуй самый быстрый способ

Спасибо: 0 
Профиль
Haz
администратор




Пост N: 519
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 05.04.15 14:47. Заголовок: есть еще быстрее из..


есть еще быстрее из реестра взять по пути
Software => Microsoft => Office => [номер версии]

но мне нравится через WMI - пофиг что код длинный и долго, зато подход к задаче системный

Спасибо: 0 
Профиль
Dima
администратор




Пост N: 4664
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 05.04.15 14:55. Заголовок: Haz пишет: есть еще..


Haz пишет:

 цитата:
есть еще быстрее из реестра взять по пути
Software => Microsoft => Office => [номер версии]


Вот и нет.
Я только что посмотрел туда и там есть остатки от старых версий , хотя у меня стоит 11 (2003)
У меня там 12 , 11 , 8 ,9 ))

Спасибо: 0 
Профиль
Haz
администратор




Пост N: 520
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 05.04.15 14:59. Заголовок: Dima пишет: там ес..


Dima пишет:

 цитата:
там есть остатки от старых версий



я ж говорил - тогда твой пример с WMI

Спасибо: 0 
Профиль
Dima
администратор




Пост N: 4665
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 05.04.15 15:05. Заголовок: Можно вообще не замо..


Можно вообще не заморачиваться и если отчет заточен под конкретный EXCEL
тогда в проге делать такой вызов ;)
 
OX:=CreateObject("Excel.Application.12")
if valtype(OX)#"O"
* Досвидос
endif



Спасибо: 0 
Профиль
Haz
администратор




Пост N: 521
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 05.04.15 15:13. Заголовок: Dima пишет: Можно в..


Dima пишет:

 цитата:
Можно вообще не заморачиваться



А вот это правильные слова т.к. у клиента может быть аллергия на микрософт офис и он пользует исключительно опенофис

Спасибо: 0 
Профиль
Dima
администратор




Пост N: 4666
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 05.04.15 15:15. Заголовок: Haz что то нафлудил..


Haz
что то нафлудили мы с тобой , Андрей и ответ не найдет

Спасибо: 0 
Профиль
Haz
администратор




Пост N: 522
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 05.04.15 15:30. Заголовок: потри лишнее , а кто..


потри лишнее , а кто ищет - тот найдет

Спасибо: 0 
Профиль
Dima
администратор




Пост N: 4667
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 05.04.15 15:51. Заголовок: Нужно сделать сетку ..


Нужно сделать сетку в диапазоне.
Сейчас делаю так
osheet:cells(1,1):BorderAround( xlContinuous, xlThin)
osheet:cells(1,2):BorderAround( xlContinuous, xlThin)
osheet:cells(1,3):BorderAround( xlContinuous, xlThin)

Но если строк/столбцов много наверное это будет работать медленно.
Если сделать вот так
oSheet:Range(osheet:cells(1,1),osheet:cells(1,3)):BorderAround( xlContinuous, xlThin)
то сетка будет только по периметру.
Нужен быстрый способ сделать сетку на диапазон.

Спасибо: 0 
Профиль
Haz
администратор




Пост N: 523
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 05.04.15 15:59. Заголовок: Dima пишет: Нужен б..


Dima пишет:

 цитата:
Нужен быстрый способ сделать сетку на диапазон.



а так

oSheet:Range(oSheet:Cells(nRowStart, 1), oSheet:Cells(nRow, 13)):Select()
WITH OBJECT oExcel:Selection
:Borders(xlDiagonalDown):LineStyle := xlNone
:Borders(xlDiagonalUp):LineStyle := xlNone
:Borders(xlEdgeLeft):LineStyle := xlContinuous
:Borders(xlEdgeLeft):Weight := xlContinuous

:Borders(xlEdgeTop):LineStyle := xlContinuous
:Borders(xlEdgeTop):Weight := xlContinuous

:Borders(xlEdgeBottom):LineStyle := xlContinuous
:Borders(xlEdgeBottom):Weight := xlContinuous

:Borders(xlEdgeRight):LineStyle := xlContinuous
:Borders(xlEdgeRight):Weight := xlContinuous

:Borders(xlInsideVertical):LineStyle := xlContinuous
:Borders(xlInsideVertical):Weight := xlContinuous

:Borders(xlInsideHorizontal):LineStyle := xlContinuous
:Borders(xlInsideHorizontal):Weight := xlContinuous

ENDWITH



Спасибо: 0 
Профиль
Dima
администратор




Пост N: 4668
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 05.04.15 16:01. Заголовок: А это быстрее будет ..


А это быстрее будет чем делать поячеячно ?

Спасибо: 0 
Профиль
Haz
администратор




Пост N: 524
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 05.04.15 16:03. Заголовок: Dima пишет: А это б..


Dima пишет:

 цитата:
А это быстрее будет чем делать поячеячно



точно попробуй на большом диапазоне

Спасибо: 0 
Профиль
Dima
администратор




Пост N: 4669
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 05.04.15 16:11. Заголовок: Да сделал тестик ;) ..


Да сделал тестик ;)
100 колонок 1000 строк.
Твой способ - доли миллисекунды ;)
Мой - 2 минуты.

Сложил методу в свою копилку

Спасибо: 0 
Профиль
Dima
администратор




Пост N: 4670
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 05.04.15 16:24. Заголовок: Игорь а как снять от..


Игорь а как снять отметку то что отметилось в Select() ?
Гугл копал но нормального ответа не увидел.

Спасибо: 0 
Профиль
Haz
администратор




Пост N: 525
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 05.04.15 16:51. Заголовок: Dima пишет: Игорь а..


Dima пишет:

 цитата:
Игорь а как снять отметку то что отметилось


попробуй переселектить cells(1,1):Select()

Спасибо: 0 
Профиль
Dima
администратор




Пост N: 4671
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 05.04.15 16:52. Заголовок: Haz пишет: попробуй..


Haz пишет:

 цитата:
попробуй переселектить cells(1,1):Select()


Ну это понятно. Я думал что есть что то типа UNSelect()

А каким образом в диапазоне поменять цвет фона ячеек ?

Все нашел что то типа :Interior:ColorIndex:=36 в WITH OBJECT oExcel:Selection

Спасибо: 0 
Профиль
Haz
администратор




Пост N: 526
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 05.04.15 17:01. Заголовок: Dima пишет: А каким..


Dima пишет:

 цитата:
А каким образом в диапазоне поменять цвет фона ячеек


я делел так
oHoja:Range(oHoja:Cells(nRow1, nCol1), oHoja:Cells(nRow2, nCol2)):Interior:Color := nColor

Спасибо: 0 
Профиль
Dima
администратор




Пост N: 4816
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 22.05.15 15:44. Заголовок: Создаю отчетик в EXC..


Создаю отчетик в EXCEL и при завершении в проге
выдаю oExcel:Visible := .t.
В Windows XP сразу появлялось окно EXCEL поверх моей программы и было активным окном.
В Windows 7 , оно появляется , но не поверх а рядом.
Как изменить такое поведение в Windows 7 ?

Спасибо: 0 
Профиль
Haz
администратор




Пост N: 557
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 22.05.15 17:10. Заголовок: Dima пишет: Как изм..


Dima пишет:

 цитата:
Как изменить такое поведение в Windows 7



hWnd := oExcel:hWnd
ShowWindow(hWnd, 3) //SW_MAXIMIZE=3 SW_NORMAL=1 SW_MINIMIZE=6
BringWindowToTop(hWnd)


Спасибо: 0 
Профиль
Ответов - 300 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All [только новые]
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 17
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет