Автор | Сообщение |
Dima
|
| |
Пост N: 2372
Зарегистрирован: 17.05.05
|
|
Отправлено: 21.05.12 16:52. Заголовок: Снова EXCEL
Ранее с Excel из Harbour ни когда не работал. Поставили тут задачу. У некоторых поставщиков есть определенные формы заказов. Набраны они в Excel. Сейчас народ руками заполняет эти формы и шлет по электронке поставщикам. Задача сводится к тому что бы в этих формах находить нужные коды товара и в нужной ячейке проставлять заказ. Может ткнет кто носом с чего начать что бы не напороться на грабли. Спасибо Сами формы тут http://zalil.ru/33279066
|
|
|
Ответов - 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\Office 15
|
|
|
Dima
|
| |
Пост N: 4663
Зарегистрирован: 17.05.05
|
|
Отправлено: 05.04.15 14:42. Заголовок: Да и это пожалуй сам..
Да и это пожалуй самый быстрый способ
|
|
|
Haz
|
| |
Пост N: 519
Зарегистрирован: 20.02.11
|
|
Отправлено: 05.04.15 14:47. Заголовок: есть еще быстрее из..
есть еще быстрее из реестра взять по пути Software => Microsoft => Office => [номер версии] но мне нравится через WMI - пофиг что код длинный и долго, зато подход к задаче системный
|
|
|
Dima
|
| |
Пост N: 4664
Зарегистрирован: 17.05.05
|
|
Отправлено: 05.04.15 14:55. Заголовок: Haz пишет: есть еще..
Haz пишет: цитата: | есть еще быстрее из реестра взять по пути Software => Microsoft => Office => [номер версии] |
| Вот и нет. Я только что посмотрел туда и там есть остатки от старых версий , хотя у меня стоит 11 (2003) У меня там 12 , 11 , 8 ,9 ))
|
|
|
Haz
|
| |
Пост N: 520
Зарегистрирован: 20.02.11
|
|
Отправлено: 05.04.15 14:59. Заголовок: Dima пишет: там ес..
Dima пишет: цитата: | там есть остатки от старых версий |
| я ж говорил - тогда твой пример с WMI
|
|
|
Dima
|
| |
Пост N: 4665
Зарегистрирован: 17.05.05
|
|
Отправлено: 05.04.15 15:05. Заголовок: Можно вообще не замо..
Можно вообще не заморачиваться и если отчет заточен под конкретный EXCEL тогда в проге делать такой вызов ;) OX:=CreateObject("Excel.Application.12") if valtype(OX)#"O" * Досвидос endif
|
|
|
Haz
|
| |
Пост N: 521
Зарегистрирован: 20.02.11
|
|
Отправлено: 05.04.15 15:13. Заголовок: Dima пишет: Можно в..
Dima пишет: цитата: | Можно вообще не заморачиваться |
| А вот это правильные слова т.к. у клиента может быть аллергия на микрософт офис и он пользует исключительно опенофис
|
|
|
Dima
|
| |
Пост N: 4666
Зарегистрирован: 17.05.05
|
|
Отправлено: 05.04.15 15:15. Заголовок: Haz что то нафлудил..
Haz что то нафлудили мы с тобой , Андрей и ответ не найдет
|
|
|
Haz
|
| |
Пост N: 522
Зарегистрирован: 20.02.11
|
|
Отправлено: 05.04.15 15:30. Заголовок: потри лишнее , а кто..
потри лишнее , а кто ищет - тот найдет
|
|
|
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) то сетка будет только по периметру. Нужен быстрый способ сделать сетку на диапазон.
|
|
|
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
|
|
|
|
Dima
|
| |
Пост N: 4668
Зарегистрирован: 17.05.05
|
|
Отправлено: 05.04.15 16:01. Заголовок: А это быстрее будет ..
А это быстрее будет чем делать поячеячно ?
|
|
|
Haz
|
| |
Пост N: 524
Зарегистрирован: 20.02.11
|
|
Отправлено: 05.04.15 16:03. Заголовок: Dima пишет: А это б..
Dima пишет: цитата: | А это быстрее будет чем делать поячеячно |
| точно попробуй на большом диапазоне
|
|
|
Dima
|
| |
Пост N: 4669
Зарегистрирован: 17.05.05
|
|
Отправлено: 05.04.15 16:11. Заголовок: Да сделал тестик ;) ..
Да сделал тестик ;) 100 колонок 1000 строк. Твой способ - доли миллисекунды ;) Мой - 2 минуты. Сложил методу в свою копилку
|
|
|
Dima
|
| |
Пост N: 4670
Зарегистрирован: 17.05.05
|
|
Отправлено: 05.04.15 16:24. Заголовок: Игорь а как снять от..
Игорь а как снять отметку то что отметилось в Select() ? Гугл копал но нормального ответа не увидел.
|
|
|
Haz
|
| |
Пост N: 525
Зарегистрирован: 20.02.11
|
|
Отправлено: 05.04.15 16:51. Заголовок: Dima пишет: Игорь а..
Dima пишет: цитата: | Игорь а как снять отметку то что отметилось |
| попробуй переселектить cells(1,1):Select()
|
|
|
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
|
|
|
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
|
|
|
Dima
|
| |
Пост N: 4816
Зарегистрирован: 17.05.05
|
|
Отправлено: 22.05.15 15:44. Заголовок: Создаю отчетик в EXC..
Создаю отчетик в EXCEL и при завершении в проге выдаю oExcel:Visible := .t. В Windows XP сразу появлялось окно EXCEL поверх моей программы и было активным окном. В Windows 7 , оно появляется , но не поверх а рядом. Как изменить такое поведение в Windows 7 ?
|
|
|
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)
|
|
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|