Форум » [x]Harbour » Снова EXCEL » Ответить

Снова EXCEL

Dima: Ранее с 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: Dima пишет: Или так Можно еще папку Program Files просканировать и по циферкам в пути понять версию \Program Files\Microsoft Office\Office15

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

Haz: есть еще быстрее из реестра взять по пути Software => Microsoft => Office => [номер версии] но мне нравится через WMI - пофиг что код длинный и долго, зато подход к задаче системный


Dima: Haz пишет: есть еще быстрее из реестра взять по пути Software => Microsoft => Office => [номер версии] Вот и нет. Я только что посмотрел туда и там есть остатки от старых версий , хотя у меня стоит 11 (2003) У меня там 12 , 11 , 8 ,9 ))

Haz: Dima пишет: там есть остатки от старых версий я ж говорил - тогда твой пример с WMI

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

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

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

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

Dima: Нужно сделать сетку в диапазоне. Сейчас делаю так 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: 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: А это быстрее будет чем делать поячеячно ?

Haz: Dima пишет: А это быстрее будет чем делать поячеячно точно попробуй на большом диапазоне

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

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

Haz: Dima пишет: Игорь а как снять отметку то что отметилось попробуй переселектить cells(1,1):Select()

Dima: Haz пишет: попробуй переселектить cells(1,1):Select() Ну это понятно. Я думал что есть что то типа UNSelect() А каким образом в диапазоне поменять цвет фона ячеек ? Все нашел что то типа :Interior:ColorIndex:=36 в WITH OBJECT oExcel:Selection

Haz: Dima пишет: А каким образом в диапазоне поменять цвет фона ячеек я делел так oHoja:Range(oHoja:Cells(nRow1, nCol1), oHoja:Cells(nRow2, nCol2)):Interior:Color := nColor

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

Haz: Dima пишет: Как изменить такое поведение в Windows 7 hWnd := oExcel:hWnd ShowWindow(hWnd, 3) //SW_MAXIMIZE=3 SW_NORMAL=1 SW_MINIMIZE=6 BringWindowToTop(hWnd)



полная версия страницы