使用here中的建议,我设法将Excel 2007嵌入到我的WPF WebBrowser控件中。但是,功能区不会显示。我尝试了各种技术,没有任何东西可以使用。
我试过了:
_application.ExecuteExcel4Macro("SHOW.TOOLBAR(\"Ribbon\",True)");
我还尝试在构建Excel工作簿后从宏运行它,
Sub hide_ribbon()
Application.ExecuteExcel4Macro ("Show.Toolbar(""Ribbon"", False)")
End Sub
Sub show_ribbon()
Application.ExecuteExcel4Macro ("Show.Toolbar(""Ribbon"", True)")
End Sub
但它也不起作用,虽然相同的宏在本机Excel中工作正常。
还试过这个:
CommandBar cb = _workbook.CommandBars["Standard"];
cb.Visible = true;
cb.Enabled = true;
cb.Position = MsoBarPosition.msoBarTop;
或者尝试将“标准”更改为“功能区”,但没有任何效果。
Ctrl + F1也不起作用。
有人知道吗?
答案 0 :(得分:2)
我用了3个多星期的时间来完成这项工作 - 即便如此,我仍然需要测试它是否按预期工作。
正如您所知,在嵌入Excel时会自动隐藏功能区,并且您需要切换'它通过发送OLE命令再次返回。
我假设您使用ActiveX容器包装的SHDocVw库,以知识库文章中描述的方式是文章http://support.microsoft.com/kb/304662,并且您已设置相应的注册表项以使浏览器访问显示Excel文档(我确信如果您缺少的是功能区,则必须完成。)
我正在使用C#,所以你可能不得不在VBA中乱七八糟。
文章名为" WebOCHostVB.exe在Visual Basic .NET中托管WebBrowser控件"在MS支持知识库看来很有希望,但URL是" support.microsoft.com/kb/311303"
打开文档后,按如下方式在浏览器上调用ExecWB:
object omissing = System.Reflection.Missing.Value ;
this.axExcelWebBrowser1.ExecWB(SHDocVw.OLECMDID.OLECMDID_HIDETOOLBARS,
SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_DONTPROMPTUSER,
ref omissing, ref omissing);
这应该切换功能区状态 - 因为它在我们启动时关闭,单个调用应该使其显示。再次这样做应该隐藏它 - 虽然我没有尝试过。
常量位于必须从项目中引用的shdocvw.dll中。即使这些是整数枚举,我也无法在本地重新定义它们并使事情发挥作用。
您可以在此处找到可能对您的应用程序有用的其他OLE命令: http://msdn.microsoft.com/en-us/library/ms691264%28v=VS.85%29.aspx
我不知道为什么会这么困难,或者为什么Excel的行为与Word的行为不一致。
希望这有帮助。