用OleContainer控件打开了一个word文档,现在想让word2007的Ribbon菜单下有些功能不能使用,比如要让“审阅”功能不能使用,应该怎么控制呢! 好像使用CommandBars 及Controls属性无法做到!

解决方案 »

  1.   

    很早前用过olecontainer,后来发现控制WORD时总不尽如人意,就转到使用CreateOleObject()来控制WORD,显示用webbrowser,比使用olecontainer功能强大。那个方便啊...
    再后来,OFFICE2007出来,webbrowser不能再装WORD,EXCEL之类了,不知道MS是怎么想的。
    不过,是不是可以在使用olecontainer的同时,使用ole方法连接,再调用VBA间接控制比如你说的“审阅”功能?
    有时间的话,我也试一试
      

  2.   

    據了解的資料來看,Ribbon是commandbars成員之一,能找到ribbon,應可解決你的問題
      

  3.   

    使用CreateOleObject()打开的方式,能处理的,OleContainer也应该能处理。关键是增么找到Ribbon
      

  4.   

    遍历commandbars可以找到ribbon,它是commandbars成员的最后一个,就是不知道怎么控制,调用set_Visible和set_Enable方法都无效的
      

  5.   

    參考一下msdn操作commandbars的范例(for word2007)
    http://msdn.microsoft.com/en-us/library/bb212714.aspx
      

  6.   

    是否試過  CommandBars['ribbon'].Controls  ?
      

  7.   

    看起來只能借助add in express了。
      

  8.   

    var
      MyWordOLE:TOleContainer; 
      IOPO:IOleInPlaceObject;
    begin
      if   MyWordOLE.State   in   [osUIActive]     then
        begin
          MyWordOLE.OleObjectInterface.QueryInterface(IOleInPlaceObject,IOPO);
          IOPO.UIDeactivate;
          IOPO   :=nil;
        end;
    上面的代码可以隐藏全部的菜单和工具栏(包括ribbon);但不是我想要的效果;我只想控制部分功能。
      

  9.   


    这个是收费的,他应该是office插件,如果使用office插件,自己也可以写的!
      

  10.   


    因為我看msdn介紹的hiding Group, hiding tab都會去取得office的GetCustomUI這個接口函數,然后掛上自己的。
    但這一切,似乎要在delphi先做一些相應的定義。
    所以考慮用add in express。或許還有其他方法,只是我們不知道...查找到有一個跟你一樣需求的,是英文網站。他到處發帖子,但沒有得到回復,呵呵。
      

  11.   

    呵呵,只能try and try, goood luck