用delphi把excel工作簿共享 vvyang帮我 ( 积分: 100 )

  • 主题发起人 主题发起人 ttt22703
  • 开始时间 开始时间
T

ttt22703

Unregistered / Unconfirmed
GUEST, unregistred user!
我在excel中用
ActiveWorkbook.KeepChangeHistory = True
ActiveWorkbook.SaveAs Filename:=activeworkbook.fullname, AccessMode:=xlShared
能把工作簿共享成功但改写成为delphi后却不行
const xlShared = $00000002;
excel.ActiveWorkbook.KeepChangeHistory := True;
excel.ActiveWorkbook.SaveAs(excel.ActiveWorkbook.FullName,xlShared);
不出错误就是不共享
谢谢
 
我在excel中用
ActiveWorkbook.KeepChangeHistory = True
ActiveWorkbook.SaveAs Filename:=activeworkbook.fullname, AccessMode:=xlShared
能把工作簿共享成功但改写成为delphi后却不行
const xlShared = $00000002;
excel.ActiveWorkbook.KeepChangeHistory := True;
excel.ActiveWorkbook.SaveAs(excel.ActiveWorkbook.FullName,xlShared);
不出错误就是不共享
谢谢
 
生成一个共享的 Excel 文件:
procedure ShareExcel(const FileName: WideString);
var
XlsApp: OleVariant;
begin
XlsApp := CreateOleObject('Excel.Application');
try
XlsApp.Workbooks.Add;
XlsApp.ActiveWorkbook.ProtectSharing(FileName);
finally
if not VarIsEmpty(XlsApp) then
begin
XlsApp.Quit;
XlsApp := Unassigned;
end;
end;
end;
 
谢谢vvyang,上面是新生一个共享文件,但如何对已经以有一个excel文件把他转化为共享文件呢
 
把这句
XlsApp.Workbooks.Add;
改成
XlsApp.WorkBooks.Open(FileName);
 
呵呵,谢谢啦
 
对了,我想把excel做在ocx中,在网页中来调用,但调用完成一个进程后,如果是直接关的excel而且不是能过ocx来关掉excel在进程中总会有一个excel进程,下次在调用这个ocx时打开网页就会出错.
XlsApp := Unassigned;比如在exe程序中可以这样来释放掉他,但在ocx中是否能够释放掉他呢,如果提前加上这句话,ocx其他程序调用xlsapp就会出错,不知道有什么好的方法吗?

谢谢
 
XlsApp := Unassigned 只是释放变量,关掉进程要用 XlsApp.Quit。
你要掌握好 Quit 的时机,什么时候不用了再 Quit。
 

Similar threads

I
回复
0
查看
781
import
I
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
650
import
I
后退
顶部