Tag: vsto

c#Excel – 退出时显示function区

我正在使用VSTO来devise一个带有Excel界面的应用程序。 我想在启动时隐藏function区(应用程序中不需要),并在退出时重新显示(如果用户最初显示的话),以避免使用该应用程序的人感到不适,而且下一次需要function区他们打开Excel。 我可以使用本质上下面的代码在ThisWorkbook_Startup隐藏function区(从这个问题Excel 2007以编程方式最小化function区,但不是菜单栏 ): Office.CommandBars cbs = null; cbs = Application.CommandBars; foreach (Office.CommandBar commandBar in cbs) { if (commandBar.Name == "Ribbon") { this.Application.ActiveWindow.Activate(); Application.SendKeys("^{F1}", true); } } 但是,当放置在ThisWorkbook_Shutdown或ThisWorkbook_BeforeClose方法中时,与之前引用的问题相同的代码或类似的变体似乎不起作用。 代码被打,但似乎永远不会执行 – function区永远不会被恢复。 还有另一种方法来退出退出function区? 谢谢, 安德鲁

其他工作簿select图表时Excel.Worksheet.Copy上的COMException错误

我们有一个应用程序是使用VSTO构build的Excel Addin。 我们使用Excel作为报告工具。 当我打开一个报告(工作簿)并select一个图表,然后打开另一个工作簿,我得到一个COMException错误。 System.Runtime.InteropServices.COMException: Exception from HRESULT: 0x800A03EC at Microsoft.Office.Interop.Excel._Worksheet.Copy(Object Before, Object After) 这只有在select图表时才会发生。 这是导致问题的代码。 (DocumentView是一个Excel工作簿。) private void CopyInitialSheets() { try { int sheetCount; Excel.Worksheet initialSheet = (Excel.Worksheet)StingerGlobal.AppData.ExcelApp.ActiveSheet; initialSheet.Visible = Excel.XlSheetVisibility.xlSheetVisible; List<string> sheetNames = new List<string>(this.DocumentView.Sheets.Count); foreach (Excel.Worksheet sheet in this.DocumentView.Sheets) { sheetNames.Add(sheet.Name); } foreach (Excel.Worksheet sheet in _sheetReports.Keys) { Excel.Worksheet veryHiddenSheet = null; […]

名称空间和类名称冲突

我有一个叫做Functions的类,在命名空间中,让我们来说SomeNameSpace 。 在Functions类中,我有一个名为GetCurrentValue的函数,我正在使用该函数创build一个Excel公式以显示在公式栏中。 我想公式方程以=SomeNameSpace.Functions.GetCurrentValue开始,但是当我尝试这个 using System.IO; using System; namespace SomeNameSpace{ public class Functions{ public object GetCurrentValue (arg1, arg2…){ //GetCurrentValue method implementation } } } using System.IO; using System; using SomeNameSpace; namespace AnotherNamespace{ public static bool SetFormula (string newFormula){ //newFormula value is "GetCurrentValue" string sTemp = "=SomeNameSpace.Functions."; string Formula = sTemp + newFormula; return true; } […]

Excel VSTO加载项:无法在MessageBox.Show(“Test”)后重新激活Excel;

我正在实现一个显示一些模式对话框的VSTO Excel加载项。 这些对话框在Windows任务栏中不显示为自己的窗口。 但是在某些情况下,这些对话框不是从Excel顶端消失,不能通过使用任务栏回来! 整个故事(用Windows XP – 7,Excel 2007 – 2010重现): 我打开Excel并创build两个或更多新的工作簿 我显示一个模式对话框,让我们说通过“MessageBox.Show”我打开“记事本”,并最大化其窗口 我尝试通过Windows任务栏重新激活其中一个Excel工作簿窗口 我期望:Excel将拿出我的模态MessageBox出现在上面 实际结果是:当您单击Windows任务栏中的工作簿项时,MessageBox或任何Excel工作簿都不会出现! 为什么??? 我可以通过Ctrl + Tab重新激活Excel。 然后我的模式对话框/ MessageBox正确的在上面。 如果您有Visual Studio和Excel,则很容易重现。 请帮忙! 问候,约尔格 代码示例: 只需创build一个空的Visual C#/ Office / 2010 / Office 2010加载项 用下面的代码replace“ThisAddIn.cs”的内容: – namespace ExcelAddIn6 { public partial class ThisAddIn { private void ThisAddIn_Startup(object sender, System.EventArgs e) { NativeWindow excelWindowThatIsTheOwner = […]

我可以在Excel 2007加载项中创build撤消logging吗?

目前,当我的加载项对工作表进行更改时,也会破坏文档历史logging,并且更改无法撤消。 有没有办法使这些变化可以被撤销? Word 2010公开了Application.UndoRecord属性等。我想我需要类似的东西,但是对于Excel 2007。我正在使用VSTO在C#中工作,在这种情况下的更改只是写入一个Value2属性的范围,即: OutRange.Value2 = Output;

如何知道表单是否在Excel中重命名

我有一个Excel的插件(VSTO),需要知道什么时候用户重命名工作表是否有任何事件会告诉我这个

在Excel VSTO 2010项目(C#)上禁用自动备份

我遇到麻烦了 当我启动我的VSTO项目,我想保存它,它会自动创build一个备份文件“ .xlk ”。 我已经find一种方法来手动禁用它,取消select备份副本: 另存为 – >工具 – >常规选项 但我想find一个编程方式来取消备份文件生成(C#VSTO 2010项目) 我已经问msdn但唯一的答案,我到现在是:将CreateBackup属性设置为false,但在vsto工作簿项目在Visual Studio 2010中此属性只是一个getter …这里是链接: msdn的线程和我想避免由macros禁用它的VBA解决scheme。 非常感谢。

如何部署vsto excel解决scheme,使pipe理员权限不被要求安装和使用?

如何部署vsto excel解决scheme,使pipe理员权限不被要求安装和使用? 我正在开发vsto解决scheme,在我不是pipe理员的计算机上。 当我使用InstallShield发布到setup.exe时,我无法运行该exe文件,因为它要求我inputpipe理员密码。 所以我现在不能testing我的项目。 有没有办法解决这个问题,以便我可以安装项目,而不是pipe理员? 然后,我也想运行Excel工作簿文件,而不要求我的pipe理员密码。

如何获得excel vsto c#区域的大小(宽度和高度),不包括色带区域?

如何获得excel vsto c#的区域的大小(宽度和高度),不包括色带区域? 这是以下红色标记显示的区域:

System.AccessViolationException使用Excel.Worksheet.Copy时

我们有一个Excel的VSTO插件。 主要function创build用于生成工作簿的报告。 当我运行一批报告时,使用Excel.Worksheet.Copy时会出现System.AccessViolationExceptionexception,这也会导致Excel崩溃。 以下是我如何重新创build它: 1)使用创build一个工作簿的单个参数打开并运行报告#1。 我们closures工作簿。 2)打开并运行几个参数相同的报告。 这创build了5个工作簿,但是在创build第二个工作簿时却崩溃了,但是只有运行了第一个单一输出报告(参见步骤1)。 如果我们从批次中删除步骤1中的报告,则会创build全部5个工作簿,而不会出错。 我已经检查过,以确保我们正在复制的工作表是从工作簿打开的,而不是引用第一个报告。 事实上,我们closures了第一个,所以我知道它不是。 同样,如果我们在第一步中有报告,而根本没有访问,那么这只会发生,那么如何影响一张完全不同的工作簿中的工作表呢? 这甚至没有完成我的try / catch,以便我可以得到更多的信息。 它只是吹了Excel,我不得不重新启动。 更新:这是基本的代码: function void ReplaceSheets(Dictionary<Excel.Worksheet, IReportSheet> sheetReports) { List<string> oldNames = new List<string>(sheetReports.Count); foreach (Excel.Worksheet oldSheet in sheetReports.Keys) { Excel.Worksheet veryHiddenSheet = null; Excel.Worksheet newSheet = null; try { string sheetName = oldSheet.Name; veryHiddenSheet = WorkbookHelper.FindSheet(this.DocumentView, MakeHiddenSheetName(sheetName, "–VH–")); veryHiddenSheet.Visible = […]