Форум

Как запустить excel

Pasha: или получить каталог установки MS Office __run('excel.exe') выдает ошибку - нет такой программы В тоже время из командной строки excel.exe запускается

Ответов - 4

gfilatov: Pasha пишет: из командной строки excel.exe запускается Попробуй использовать эту функцию для расширения XLS: --------------------------------------------------------* Static Function GetOpenCommand( cExt ) *--------------------------------------------------------* Local oReg, cVar1 := "", cVar2 := "", nPos If ! ValType( cExt ) == "C" Return "" Endif If ! Left( cExt, 1 ) == "." cExt := "." + cExt Endif oReg := TReg32():New( HKEY_CLASSES_ROOT, cExt, .f. ) cVar1 := RTrim( StrTran( oReg:Get( Nil, "" ), Chr(0), " " ) ) // i.e look for (Default) key oReg:close() If ! Empty( cVar1 ) oReg := TReg32():New( HKEY_CLASSES_ROOT, cVar1 + "\shell\open\command", .f. ) cVar2 := RTrim( StrTran( oReg:Get( Nil, "" ), Chr(0), " " ) ) // i.e look for (Default) key oReg:close() If ( nPos := RAt( " %1", cVar2 ) ) > 0 // look for param placeholder without the quotes (ie notepad) cVar2 := SubStr( cVar2, 1, nPos ) Elseif ( nPos := RAt( '"%', cVar2 ) ) > 0 // look for stuff like "%1", "%L", and so forth (ie, with quotes) cVar2 := SubStr( cVar2, 1, nPos - 1 ) Elseif ( nPos := RAt( '%', cVar2 ) ) > 0 // look for stuff like "%1", "%L", and so forth (ie, without quotes) cVar2 := SubStr( cVar2, 1, nPos - 1 ) Elseif ( nPos := RAt( ' /', cVar2 ) ) > 0 // look for stuff like "/" cVar2 := SubStr( cVar2, 1, nPos - 1 ) Endif Endif Return RTrim( cVar2 )

Pasha: Спасибо, все получилось

ММК: Pasha пишет: получить каталог установки MS Office Может файвиновский код на какую мысль натолкнет с учетом совета Григория :) **************************** Function MSWORD_PATH() *--------------------- Local nHandle, cValue := "" if RegOpenKey( HKEY_LOCAL_MACHINE,; "SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths", @nHandle ) == 0 RegQueryValue( nHandle, "WINWORD.EXE", @cValue ) cValue := lfn2sfn(cValue) RegCloseKey( nHandle ) endif Return (cValue)


Pasha: Спасибо ! И так работает, и сяк работает :) В конце концов остановился на функции Function MSExcel_PATH Return GetRegistry(, "SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\excel.exe", 'Path' ) которая использует стандартные средства харбора для работы с реестром



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