Форум » [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

Andrey: http://clipper.borda.ru/?1-20-0-00000371-000-0-0-1195742832 Pasha - Пост N: 645 В конце концов остановился на функции Function MSExcel_PATH Return GetRegistry(, "SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\excel.exe", 'Path' ) которая использует стандартные средства харбора для работы с реестром Не работает ! Возвращает NIL

PSP: Andrey пишет: Не работает ! Возвращает NIL А так? "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\excel.exe"

Dima: тоже не пашет с HBWIN win_regRead( "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\excel.exe" ) + это win_regRead( "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\Opera.exe" ) win_regRead( "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\firefox.exe" )


PSP: Работает так: win_regRead( "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\excel.exe\Path" )

Dima: PSP Точно !

PSP: Dima пишет: Точно ! И даже больше: если в конце не указывать Path, а оставить только слэш, win_regRead( "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\excel.exe\ то вернет значение параметра "По умолчанию". Просто, если нет слэша, то функция возвращает NIL, потому что "excel.exe" - название раздела, а не параметра.

Dima: PSP пишет: то вернет значение параметра "По умолчанию". Да и имена папок в формате 8.3

PSP: Dima пишет: Да и имена папок в формате 8.3 Для excel - да, для firefox - нормально )))

Andrey: А как заменить внизу: "Лист 1", "Лист 2" ....

Dima: PSP То есть корректно получить версию можно так...или туплю слегка. Первое что пришло в голову left(right(win_regRead( "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\excel.exe\Path" ),3),2)

Dima: Andrey пишет: А как заменить внизу: "Лист 1", "Лист 2" .... Включить макрос как минимум на запись и переименовать руками После смотрим что же там........... [pre2] Sheets("Лист1").Select Sheets("Лист1").Name = "XXX" [/pre2] затем это превращаем в код Harbour. PS Спать ночью надо Андрей

PSP: Dima пишет: То есть корректно получить версию можно так...или туплю слегка. Вот еще есть кое-что: "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office". В этом разделе должен быть подраздел с номером версии, в котором, в свою очередь, подразделы для всех установленных программ. Не знаю, удаляются ли эти ветки из реестра в случае деинсталляции офиса. В принципе, можно проверить, существует ли файл, к примеру excel.exe, по пути из соответствующего подраздела, т.е. File( win_regRead( "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\15.0\Excel\InstallRoot\Path" ) + "\Excel.exe" )

Dima: PSP в этой ветке вижу у себя 11.0 и 9.0 стрянно , ставил только 2003 оффис

Dima: PSP пишет: В принципе, можно проверить, существует ли файл я понял корректного получения номера оффиса нет (включая 32 или 64 бит) , или есть ?

PSP: Dima пишет: PSP в этой ветке вижу у себя 11.0 и 9.0 стрянно , ставил только 2003 оффис Нужно проверять наличие соответствующих путей к exe-шникам в обоих ветках. Если есть и там, и там, - использовать более свежее.

Dima: PSP Понял. Бум думать :) PS 2-х офисов (или более) надеюсь не может быть установлено

PSP: Dima, а какие переменные есть в объекте, который возвращает CreateObject( "Excel.Application" ) ? Сам не могу глянуть сейчас. Нет ли там номера версии?

Dima: PSP Номерок то есть НО после CreateObject( "Excel.Application" ) а нужно ведь сразу создать правильный CreateObject( "Excel.Application"+ExVer() ) типа так oExcel:Version

PSP: Dima пишет: Номерок то есть НО после CreateObject( "Excel.Application" ) а нужно ведь сразу создать правильный CreateObject( "Excel.Application"+ExVer() ) Ну, ок... А если создать без номера версии, прочитать версию, закрыть, а потом создать с нужным номером? Понимаю, что не очень красиво, но, имхо, правильней, чем в реестре рыться.

Dima: PSP Кстати да , вариант.



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