请教excel问题(急)(10分)

  • 主题发起人 主题发起人 yanyandt2
  • 开始时间 开始时间
Y

yanyandt2

Unregistered / Unconfirmed
GUEST, unregistred user!
请问如何获得系统中excel.exe的路径?
如果系统中安装了多个版本excel,则找到当前
可用的版本。
谢谢!!
 
高手help me啊~~
 
再顶,help me
 
没人会???
 
高手帮帮忙啊!!
 
我没有试国,以下想法共蚕靠
从注册表中找EXCEL 的设置,也许有
还可以从注册表中找.XLS等EXCEL 文件的关联程序
 
我找了一个,不能100%确定,所以想看谁做过,以确定一下。。。
 
case GetFileDefaultOpenShell(ExtractFileExt(sFileName)) of
0: ShellExecute(Handle, 'edit', PChar(sFileName), nil, nil, SW_SHOWNORMAL);
1: ShellExecute(Handle, 'open', PChar(sFileName), nil, nil, SW_SHOWNORMAL);
else
WinExec(PChar(Format('rundll32.exe shell32.dll,OpenAs_RunDLL %S',
[sFileName])), SW_SHOWNORMAL);
end;
获取文件扩展,然后,用SHELLEXRCUTE函数自动打开,不用管版本,只要系统中有装相应的软件.不只针对EXCEL其他亦可.
 
楼上误会了
我不是要打开excel文件,而是要找到 excel.exe
 
function GetFileDefaultOpenShell(FileExtKey: string): integer;
var
RegEdit: TRegistry;
begin
Result := -1;
RegEdit := TRegistry.Create;
try
RegEdit.RootKey := HKEY_CLASSES_ROOT;
if RegEdit.KeyExists(FileExtKey) then
begin
//取得文件类型
try
RegEdit.OpenKey(FileExtKey, false);
FileExtKey := RegEdit.ReadString('');
RegEdit.CloseKey;
if RegEdit.KeyExists(Format('%S/shell/edit/command', [FileExtKey])) then
Result := 0
else
if RegEdit.KeyExists(Format('%S/shell/open/command', [FileExtKey])) then
Result := 1;
except
Result := -1;
end;
end;
finally
RegEdit.CloseKey;
if Assigned(RegEdit) then RegEdit.Free;
end;
end;
 
请问 bliss,函数的参数应该是什么样子的?是 'xls'还是'excel'?
 
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Office/9.0/Excel/InstallRoot
测此键.
 
虽然可以找到,但是如果机器中装了数个office,
如 7.0,8.0,9.0
如何找到当前正在使用的版本excel.exe路径?
 
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Office/
/Excel/InstallRoot
都是确定的,只要循环7.0,8.0,9.0等是否存在,确定最高版本即可.
 
那可不一定啊
我先装了office xp(10.0)
然后我又装了office 2000(9.0)
那我能使用的excel应该是9.0的,而不是10.0的
 
哎!你不会再盾键值里的目录存不存在,如果存在,再看有没有excel.exe是否存在.
 
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/App Paths/Excel.exe
测这个键也一样.
 
后退
顶部