程序有两个窗口主窗FrmMain和另一个窗口FrmSlv.
在主窗口放置Excel控件,并做一些操纵EXCEL的工作.
存在如下两种情况:
1.FrmMain中操纵Excel,一切正常
2.在主窗口的一个Button上触发事件,弹出FrmSlv,在FrmSlv上有一个Button,控制FrmMain的Excel控件填充数据,一切正常.
3.在主窗口的ExcelWorkSheet的OnBeforeDoubleClick事件中,弹出FrmSlv(FrmSlv.Show),在FrmSlv上的Button控制FrmMain的Excel控件填充数据时,弹出的'被呼叫方拒绝接受呼叫'异常.
4.把FrmSlv.Show改为FrmSlv.ShowModule,一切正常.
4.改为在ExcelWorkSheet的OnBeforeDoubleClick事件中向FrmMain发送消息,FrmMain接到消息后,弹出FrmSlv, 异常依旧.奇怪,请高手帮助解答,谢谢!!

解决方案 »

  1.   

    1。当EXCEL已经打开后,再调用会有“被呼叫方拒绝接受呼叫”异常
    2。当文档为只读或正在被第三方打开也会有“被呼叫方拒绝接受呼叫”异常
      

  2.   


    to lxl'1.当EXCEL已经打开后,再调用会有“被呼叫方拒绝接受呼叫”异常',肯定不是这种情况.'2.当文档为只读'也不是这种情况 '3正在被第三方打开也会有“被呼叫方拒绝接受呼叫”异常',那,怎么会是第三方打开呢??
      

  3.   

    好象是EXCEL处于“编辑”状态的原因
      

  4.   

    '好象是EXCEL处于“编辑”状态的原因'cxreal(转身离开的是你)说的对,如何控制Excel的编辑状态, 或者说双击一个单元格,不让他处于编辑状态.!!!
      

  5.   

    可能和操纵word一样.
    在Excel控件onquit事件中添加如下代码:
    Excel1.disconnect;
      

  6.   

    不知道你在OnBeforeDoubleClick事件中,弹出窗体后,
    来个break,或者exit之类的行不行?
    或则你换个触发事件?
    没试验过....
    偶遇见的时候是改了一下流程的,因为不是很重要的部分 ^_^!!!
      

  7.   

    to  cxreal(转身离开的是你)我想break,或者exit之类一定不行.
    你说换个触发事件是什么意思?
    还有,在OnBeforeDoubleClick中有个Cancel回传参数,msdn上讲,如果置为True,就不会处于编辑状态了,可是,我试过Cancel = true, 不起作用.郁闷!
      

  8.   

    ^_^,郁闷一天,问题终于解决,谢谢.OnBeforeDoubleClick中有个Cancel回传参数原来是oleVariantd的bool指针,PChar(TVarData(Cancel).VPointer)^  := char($ff);即可.