excel问题急~~~~~!! ( 积分: 100 )

  • 主题发起人 主题发起人 sgs125
  • 开始时间 开始时间
S

sgs125

Unregistered / Unconfirmed
GUEST, unregistred user!
就是在双击Excel以后,Excel单元格处于编辑状态,在这种状态下,对Excel的操作就会提示'被呼叫方拒绝接受呼叫'的异常.如果Excel没有处于编辑状态,那么,就不会出现这种异常.

那么,我如何控制不让单元格处于编辑状态呢?
用代码控制哦。。
 
就是在双击Excel以后,Excel单元格处于编辑状态,在这种状态下,对Excel的操作就会提示'被呼叫方拒绝接受呼叫'的异常.如果Excel没有处于编辑状态,那么,就不会出现这种异常.

那么,我如何控制不让单元格处于编辑状态呢?
用代码控制哦。。
 
高手们帮帮忙啊。。。
 
那你就事先把 Excel 表保护起来呗。
uses ComObj;
//Fn: 文件名; Pwd: 密码;
function LockExcel(const Fn, Pwd: string): Boolean;
var
XlsApp: OleVariant;
begin
Result := True;
try
try
XlsApp := CreateOleObject('Excel.Application');
XlsApp.DisplayAlerts := $00000000;
XlsApp.WorkBooks.Open(Fn);
XlsApp.ActiveSheet.Protect(Pwd, True, True, True);
XlsApp.ActiveWorkbook.Save;
except
Result := False;
end;
finally
if not VarIsEmpty(XlsApp) then
XlsApp.Quit;
XlsApp := Unassigned;
end;
end;
 
to vvyang
由于设计限定我不能把excel保护起来,因为我设计是和用户交互的excel插件。用户在使用我的插件的同时还要修改excel 的内容
 
To sgs125:
1、你“不让单元格处于编辑状态”,后来又要“用户在使用我的插件的同时还要修改excel 的内容”,不觉得很矛盾么??
2、我没看明白你问题的意思,表述清楚好么?
 
to vvyang
我的插件是通过用户在我的界面选择一定的参数,然后生成数据往excel里面插入
我说的不让单元格的编辑状态是指当用户双击单元格的时候会进入单元格的编辑状态(就是出现光标),但是我的程序如果在excel出现单元格编辑状态往excel中插入的时候就会出现“被呼叫方据绝呼叫”的错误。所以我想把双击进入单元格的那个编辑状态取消(就是在excel操作的时候,用enter或者esc),不知道我这样表示清楚妈?当然也许是我思路有问题,如果有其他方法也是可以的
 
大哥你有qq,有加我?1080204
 
总算说明白了,这个问题 Easy 啊:
我给你写了个过程,你只需在插入插件之前调用它,就能够取消所有 Excel 窗口的编辑状态(也可以把 VK_ESCAPE 换成 VK_RETURN)。
procedure CancelExcel;
function EnumFunc(const hWnd: Longword; lParam: Longint): BOOL; stdcall;
var
pClassName: array[0..254] of Char;
begin
GetClassName(hWnd, pClassName, 255);
if pClassName = 'XLMAIN' then
PostMessage(hWnd, WM_KEYDOWN, VK_ESCAPE, 0);
Result := True;
end;
begin
EnumWindows(@EnumFunc, 0);
end;
 
昨天忘了上来结贴了,呵呵,我昨天刚刚搞出来,方法用的和vvyang一样的,呵呵,我转牛角了,呵呵
 
后退
顶部