Tag: vsto

VSTO Excel插件中的独立WPF表单将无法保持焦点

我正在创build一个Excel的VSTO插件,我的第一次尝试,但我不满意的devise。 由于标准的VSTO只处理Windows窗体。 我现在正在进入WPF,并发现布局和animation的选项使用户体验更好。 我现在发现,我可以添加一个WPF项目的VSTO解决scheme,并调用这种forms…非常好! 问题是当我加载一个窗体,我这样做: Dim NewForm as New NewForm NewForm.Show() 这工作正常,并打开窗体,但是,如果我尝试键入一个文本框,窗体下降后面的Excel和文本进入Excel中的活动单元格。 如果我做: Dim NewForm as New NewForm NewForm.ShowDialog() 它工作正常。 不幸的是,我不能有我的应用程序模式的forms。 我怎样才能解决这个问题?

更新VSTO Excel加载项

我写了一个VSTO Excel 2010 AddIn并成功地将它安装在不是我的开发机器的机器上。 我通过首先创build一个文件夹来保存AddIn应用程序文件来手动安装它。 该文件夹是C:\ TestXL2010。 然后,将我的机器项目bin \ release文件夹中的所有文件放到testing机器上的TestXL2010文件夹中。 接下来,我创build并运行了包含以下行的安装registry脚本。 Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Microsoft\Office\Excel\Addins\TestXL2010] "Description"="TestXL2010" "FriendlyName"="TestXL2010" "LoadBehavior"=dword:00000003 "Manifest"="file:///C:/TestXL2010/TestXL2010.vsto" 在这一点上,一切似乎按预期运作。 现在的问题。 我对应用程序进行了一些更改,重新构build解决scheme,并将新的一组文件复制到TextXL2010文件夹中。 Excel似乎看不到新文件。 它的行为就好像它仍然在caching的原始文件集上运行。 我试图卸载,重命名等无济于事。 Excel似乎卡在应用程序的第一个版本。 任何build议,我需要做什么来清除caching版本或使Excel看到新版本将不胜感激。

GetVstoObject因AccessViolationException失败

我正在用Excel 2010和VSTO 4在.NET 4.0(C#)中开发Excel加载项。在我的Excel存取器类中,我有一个返回VSTO扩展活动工作簿的属性“CurrentWorkbook”: public Microsoft.Office.Tools.Excel.Workbook CurrentWorkbook { get { if (Globals.ThisAddIn.Application.ActiveWorkbook == null) return null; return Globals.Factory.GetVstoObject(Globals.ThisAddIn.Application.ActiveWorkbook); } } 通常,这工作正常。 但有些情况下, GetVstoObject失败并带有AccessViolationException : at Microsoft.VisualStudio.Tools.Office.Runtime.Interop.IHostItemFactoryNoMAF.CreateProvider(Object document) at Microsoft.Office.Tools.Excel.WorkbookImpl.GetVstoObject(_Workbook workbook, IServiceProvider serviceProvider, UInt32 officeVersion) at Microsoft.Office.Tools.Excel.ApplicationFactoryImpl.GetVstoWorkbook(_Workbook workbook) at Microsoft.Office.Tools.Excel.ApplicationFactoryImpl.GetVstoObject(_Workbook workbook) at TNPExcelAddIn2.ConnectionLayer.ExcelAccess.ExcelAccessor.get_CurrentWorkbook() 提示:在错误情况下, Globals.ThisAddIn.Application.ActiveWorkbook不为null ,但在Debugger中,您可以看到底层的Sytem.__ComObject有些“损坏”,因为它的m_ObjectToDataMap为null 。 任何猜测? 我该如何处理? 或者如何在使用GetVstoObject之前“testing” System.__ComObject ? Jörg,先谢谢你的回答

Excel RTD如何调用IRtdServer.DisconnectData()?

在Excel中使用=RTD()调用ConnectData()非常简单。 但是也有一个函数DisconnectData() 。 是否有一些Excel函数会导致DisconnectData()被调用? 这是什么方法,真的吗?

为Excelfunction区创build倒数计时器

我正在寻找使用VSTO时单击button1时在excel中创buildfunction区的倒计时器。 这是我的代码到目前为止: private void Ribbon1_Load(object sender, RibbonUIEventArgs e) { TimerLabel.Label = "5:00"; Convert.ToInt32(TimerLabel.Label); } private void button1_Click(object sender, RibbonControlEventArgs e) { TimeSpan TimeDecrease = TimeSpan.FromSeconds(1);\ TimerLabel.Label = Convert.ToInt32(TimerLabel.Label) – TimeDecrease; } } 不知道如何去做。 任何帮助是伟大的

Excel VSTO中的Form.Show(IWin32Window)方法在应用程序closures时导致ThreadAbortException

我有一个Excel插件,我有一个窗体,我想成为excel窗口的前面。 为此,我使用NativeWindow作为excelfunction区菜单button,如下所示: public partial class MyRibbonMenu { public List<Form> Forms = new List<Form>(); private void button1_Click(object sender, RibbonControlEventArgs e) { // initialize form Form frm = new Form(); frm.Text = "Test Form"; Forms.Add(frm); // create the native window handle NativeWindow nw = new NativeWindow(); IntPtr iptr = new IntPtr(Globals.ThisAddIn.Application.Hwnd); nw.AssignHandle(iptr); // when close the form […]

从VSTO的应用程序中的其他位置修改Officefunction区控件状态

我有一个用XML创build的VSTO Addinfunction区,而不是devise者。 它有一个button,我只想在用户处于插件控制范围时启用。 我有callback设置工作正常,当function区加载。 Ribbon1.cs代码 public bool refreshButtonState; public void Ribbon_Load(Office.IRibbonUI ribbonUI) { this.ribbon = ribbonUI; refreshButtonState = false; ribbon.InvalidateControl("btnRefreshQuery"); } public bool refreshEnabled(Office.IRibbonControl control) { return refreshButtonState; } 我捕获了一个工作表更改事件来监视用户在下面的范围。 ThisAddIn.cs代码 void ThisWorkbook_SheetChange(object ws, Excel.Range rng) { //Disable Button state here. if (rng.ListObject != null) { if (rng.ListObject.Name.StartsWith(LO_PREFIX)) { //Enable Button state here. } } […]

如何在c#VSTO中添加来自XLAM的现有VBA代码

我有一个与VBA代码在其中的xlam通过名为“组1”的function区组和公开的function,通过名为“组2”的function区组公开function。 我想将VBA文件的一些function移出到C#中。 a)我可以很容易地将VBA“包含”在C#中,所以我不必将其全部迁移到c#中去? b)我可以创buildfunction区组的项目/button在C#中添加,但有代码引用回到.xlam文件? 我已经看到这个链接( http://msdn.microsoft.com/en-us/library/dd465290(VS.100).aspx )这似乎谈论发布多个解决scheme,我不认为是我'之后 – 虽然这种方法可以用于从VSTO应用程序中部署.xlam(并且至less简化了包的部署?

为给定的选定单元格select整个行

我有一个至less有20列不同的Excel文件,每列至less有100行。 当用户点击给定的单元格时,我需要一种方法来select一个完整的块(选定行的所有列)。 现在我有这样的代码: private void Application_SheetSelectionChange(object Sh, Excel.Range Target) { Excel.Range activecell = ((Excel.Range)Application.ActiveCell); if (Target.Value != null) { /do something } } 这个代码只select所选的单元格,我需要一种方法来select和检查所有相邻的单元格选定一个。

VSTO获取Excel范围并放入文本框

我创build了一个自定义的任务窗格,上面有几个input。 其中一个input是一个文本框。 我想要做的是点击文本框,然后拖动select单元格范围,并将范围设置为文本框。 例如,“条件格式”对话窗口具有此function。 如果我从自定义任务窗格更改为Excel,将使用什么事件?