Tag: vsto

部署使用VSTO的C#应用​​程序

我最近build立了一个应用程序,从Excel电子表格中提取数据,通过运行一个macros来获取数据。 我把这个已经存在的Excel项目放到Visual Studio中,然后编写C#来做我所需要的。 我遇到的问题是,当我将其部署到networking文件夹时,没有运行该应用程序的图标。 我运行setup.exe和.vsto,这两个都说是安装正确,但无法find一个图标,我的用户可以按运行应用程序。 我知道我必须错过简单的事情。 有任何想法吗?

Excel 2016自定义任务窗格

我在多个Excel 2016文档中遇到一个CustomTaskPane问题。 我用我的WinForm用户控件创build并显示任务窗格 Dim cll As cMyControl = New cMyControl Private Sub ThisAddIn_Startup() Handles Me.Startup CustomTaskPanes.Add(cll, "Panel") End Sub 这个面板我可以在所有的工作簿中看到。 Private Sub Application_WorkbookActivate(Wb As Microsoft.Office.Interop.Excel.Workbook) Handles Application.WorkbookActivate CustomTaskPanes.RemoveAt(0) CustomTaskPanes.Add(cll, "Panel") End Sub 问题是面板被创build,但是是空的。 有什么办法如何转移CustomTaskPanels之间的用户控制? 或者如何将创build的面板附加到另一个Excel窗口? 因为我不想为每个工作簿激活创build新的cll对象。

在VSTO中显示/隐藏CustomTaskPane时滑动animation

我有一个CustomTaskPane在我的VSTO项目,我可以显示/隐藏使用.Visible = true/false属性。 然而,这是一个普通的显示/隐藏元素,没有任何animation。 但是,Excel 2016附带的“智能查找”button也会通过向左/向右滑动来打开Excel窗格。 我猜测智能查找插件是使用JavaScript代替过时的VSTO COM插件的新技术,因此可能具有这样的function。 我能在VSTO插件中使用吗?

忽略CS1762的含义(“由于间接引用,引用了embedded式互操作程序集…”)

我正在解决一堆累积在Excel插件中的项目的警告。 一个这样的警告是名义参考CS1762,因为一个引用导入embeddedtypes,另一个不(在我的情况下,具体的Microsoft.Office.Tools.Excel.v9.0和Microsoft.Office.Interop.Excel ,其中前者不embedded互操作types,后者)。 我知道,为了解决这个警告,把两者都设置为相同的值是一件简单的事情。 但是,我不清楚目前的行为(我想保持)。 具体来说,是警告声明“你要求我只复制对于这个程序集很重要的互操作细节,但是这个其他程序集的所有内容,所以我只是复制了所有的东西” ,或者是说“你”我要求我为这个程序集embeddedinteroptypes,所以现在我要做这个,而不pipe其他设置“ ? 直观地说,它应该是解决警告和保持当前行为的第一个意思,我应该将所有embeddedinteroptypes的情况设置为false。 但是,因为我知道外挂程序对所有用户来说都或多或less地起作用,其中一些使用Excel 2010,其中一些使用Excel 2013,其中一些可能明确地安装了VSTO,其中一些可能不会,我想确定一下,当插件的某些function由于更改设置而没有明显的原因停止工作的时候,我并没有为自己的瘀伤做好准备。 当然,第三个select就是压制这个警告,让VS继续做下去,但是这似乎是错误的做法。

Excel Interop AccessViolationException

System.AccessViolationException:试图读取或写入受保护的内存。 这通常表示其他内存已损坏。 (System.RuntimeType.ForwardCallToInvokeMember(String memberName,BindingFlags flags,Object target,Int32 [] aWrapperTypes,MessageData&msgData) 我正在通过调用这个 myRangeObj.Insert(CopyOrigin: XlInsertFormatOrigin.xlFormatFromLeftOrAbove); Excel刚刚崩溃后。 行为是相当有趣的。 如果我不附加到debugging器Excel只是崩溃,没有全局exception处理程序被击中。 在事件查看器的条目是 错误应用程序名称:EXCEL.EXE,版本:15.0.4867.1000,时间戳:0x57d799c6 错误模块名称:ntdll.dll,版本:6.1.7601.23543,时间戳:0x57d2fde1 exception代码:0xc0000005 错误偏移量:0x00000000000724a8 错误进程ID:0x1720 错误应用程序开始时间:0x01d241b7c6c06d70 错误的应用程序path:C:\ Program Files \ Microsoft Office \ Office15 \ EXCEL.EXE 错误模块path:C:\ windows \ SYSTEM32 \ ntdll.dll 报告ID:2974b4d0-adab-11e6-828a-44850096768d 如果我附加到一个debugging器,有时我可以得到TargetInvocationException后抛出AccessViolationException。 如果我尝试在该行附近添加一个try catch块,Visual Studio将会崩溃,并且catch块代码不会被击中 这个问题只能在一些机器上重现,我们注意到Application.Calculate()调用也可能导致这个问题。 此问题已在Windows 7,Windows 10和Windows Server 2008中全部使用32位Excel 2013进行了复制 任何想法,将不胜感激。

基于屏幕分辨率的VSTO-Excel自定义任务窗格自动resize

我有一个问题,我的VSTO插件为Excel。 我试图创build自定义任务窗格fot我的插件。 但是,当我尝试在开发人员的显示器上将其部署在不同分辨率的屏幕上时,插件不会自动适应屏幕。 注意:我的客户有不同的屏幕分辨率。 在我的vsto项目上,我试图创build一个自定义用户控件,并将其附加在Excel窗格上。 请参阅下面的代码: private void btnDownload_Click(object sender, RibbonControlEventArgs e) { taskPaneView = new ucCusipAddPanel(); if (myTaskPane == null) { myTaskPane = Globals.ThisAddIn.CustomTaskPanes.Add(taskPaneView, "My Custom Task Pane"); myTaskPane.DockPosition = Office.MsoCTPDockPosition.msoCTPDockPositionRight; myTaskPane.DockPositionRestrict = Office.MsoCTPDockPositionRestrict.msoCTPDockPositionRestrictNoChange; myTaskPane.Visible = true; myTaskPane.Width = 303; } else { myTaskPane.Visible = true; taskPaneView.BringToFront(); taskPaneView.Focus(); } } ucCusipAddPanel是我的用户控件的名称。 这是如何调用我的自定义任务面板上按function区button单击。 我已经将AutoSize属性设置为我的用户控件的真,但仍存在问题。 我怎么解决这个问题? […]

隐藏/取消隐藏VSTO应用程序中的Excel行C#

我的任务是根据string是否存在于特定行中来隐藏/取消隐藏excel工作簿的行。 我面对的问题是,使用下面的代码,我花了20秒左右的时间在1000行上执行这个任务。 该文件可能有多达2k-3k行,我想减less这个加载时间。 需要注意的是,当我在代码中注释“隐藏/取消隐藏”整行(currentFind.EntireRow.Hidden =!isShown;)时,excel文件只需要4-5秒的时间来加载。 这使我得出这样的结论:它是一个耗时的行隐藏部分,而不是string部分的search。 Worksheet activeWorksheet= Globals.ThisAddIn.Application.ActiveSheet; Range usedRange = activeWorksheet.UsedRange; Range currentFind = null; Range firstFind = null; currentFind = activeWorksheet.UsedRange.Find(searchInput); while (currentFind != null) { // Keep track of the first range you find. if (firstFind == null) { firstFind = currentFind; } // If you didn't move to a new […]

获取特定列中的行数(来自特定行)Excel Interop C#

我希望能够从特定的行(例如,A2到列A中使用的最后一行)获取列中使用的行数。 我试了下面的代码,但无法得到所需的结果(即,应得到4,但得到5行) using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; using Excel = Microsoft.Office.Interop.Excel; namespace excel_interop_practice { class Program { static void Main(string[] args) { Excel.Application xlApp = new Excel.Application(); Excel.Workbook xlWorkbook = xlApp.Workbooks.Open("D:\\book1.xlsx"); Excel.Range xlTestRange; Excel._Worksheet xlWorksheet = xlWorkbook.Sheets[1]; xlTestRange = xlWorksheet.UsedRange; int row_used = xlTestRange.Cells[2, 1].End(Excel.XlDirection.xlDown).Row; Console.WriteLine(row_used); Console.ReadKey(); } […]

VSTO 2015根据办公室安装的语言生成伪代码

在我的工作站上,我使用名为“Excel 2013和2016 VSTO工作簿”的模板创build了一个使用VSTO 2015的项目。 我使用项目模板中的“复制”选项来复制现有的Excel文档。 我在这台计算机上安装了法语版的Office 2016,VS生成了一个代码,其中有几个类inheritance自名为“Feuill1”,“Feuill2”等的WorksheetBase。对于表单n,将生成WorksheetBase构造函数的Cookie和标识符参数代码为“Feuilln”,“Feuilln”,我调整了我的代码,项目运行完美,然后将我的VS项目复制到另一台安装Office 2016的计算机上,当我尝试运行我的项目时出现错误,似乎没有发现Feuilln,我改变了这些名字为'Sheetn',它的工作,我很disapointed:是不是一个错误的想法,根据文化产生类?有没有办法创build一个项目独立工作办公文化? 我找不到任何有关Microsoft.Office.Tools.Excel.Factory使用的过程的文档及其对xxxx.Designer.xml参数文件的使用。 是否适应这个文件的方式去独立文化?

embedded在Excel表单中的button在点击Surface Pro 4后变为像素化

我有一个工作簿,可以与许多VBA和一个自定义插件一起为客户创build报告。 该工作簿在前面板上有一系列button,用于控制报告“app”的操作: 这主要是在Surface Pro 3s和4s上部署的。 其中一位用户报告说,他们每次点击一个button,就会变成像素化(如下图所示),不能再被读取。 我没有在其他单位看到这个,并且这个用户有一个外部显示器可能是相关的,这个外部显示器重复他的表面屏幕上的内容。 效果发生在两个屏幕上: Office版本是Excel 2016 MSO 32位。 有没有人看过这个,有谁知道为什么会发生?