Tag: vsto

如何检查哪些形状/对象被选中/激活?

我想检查哪些对象被选中/激活。 在PowerPoint和Word中,这是很容易的,但在Excel中…没有什么我检查工作。 Globals.ThisAddin.ActiveWindow.Selection的types是:dynamic。 我添加了对VisualBasic的引用,以访问TypeName函数。 如果select图表,它会返回types“ChartObject”…所以我将它设置为ChartObjecttypes的variables,但是我几乎不能访问它的任何属性和方法,例如当我尝试读取该对象的名称或试图从它返回图表给我一个错误。 当select几个形状时,TypeName函数返回我的types:“DrawingObjects”…但我无法从中读取任何东西。 我试图从ShapeRange中获得,但是又一次…错误。 你能告诉我如何获得所有选定的对象?

在Excel中使用VSTO C#(com插​​件)添加自定义右键单击菜单

当用户右键单击单元格时,我想添加一些自定义选项到上下文菜单。 我喜欢一些解决scheme,但这些是文档级解决scheme或使用Addin Express。 我正在VSTO C#中build立一个COM Addin。 这是所需输出的例子。

C#AddIn Excel:导出带有分隔符的文本文件中的xls文件

这是我的第一个AddIn Excel中,我有一个问题,导出文本文件中带有分隔符(“|”)的Excel文件。 我想导出excel的文件在相同的path,扩展名为“.txt”,我想用一个特定的字符(“|”)分开excel的列。 我在function区上创build了一个button: private void exportSave_Click(object sender, RibbonControlEventArgs e) { int lastColumns; lastColumns = usedRange.Columns.Count; int endCol = lastColumns; Microsoft.Office.Interop.Excel.Worksheet xlSheet = Globals.VATTools.Application.ActiveSheet; Microsoft.Office.Interop.Excel.Range usedRange = xlSheet.UsedRange; // Save file in .txt in the same path string path = System.IO.Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName); xlSheet.SaveAs(path, Microsoft.Office.Interop.Excel.XlFileFormat.xlTextWindows); } 我不确定格式“xlTextWindows”。 我确定我的列,但我不知道如何在列之间添加一个特定的字符,然后将其导出到.txt 谢谢 !

Excel Ribbon中的“自定义”选项卡无法激活

我正在尝试这个来激活一个自定义选项卡: Globals.Ribbons.MyRibbon.RibbonUI.ActivateTab("TabAddin") 它什么都不做。 没有错误,没有标签激活,什么都没有。 如果我更改标签名称到一个非现有的选项卡,它会引发exception,这是显而易见的。 这意味着ActivateTab方法正在做一些事情,但不是它打算做什么。 请帮忙吗? 这是Excel 2016的VSTO。

在VSTO Excel项目中创buildpopup日历

我正在尝试使用VSTO Excel工作簿中的System.Windows.Forms.MonthCalendar控件。 当我点击function区中的一个button时,我想让MonthCalendarpopup,但到目前为止我无法控制显示。 Private Sub DeliveryDateFromCalendarButton_Click(ByVal sender As System.Object, ByVal e As Microsoft.Office.Tools.Ribbon.RibbonControlEventArgs) Handles DeliveryDateFromCalendarButton.Click Dim selectedFiscalYear As String = Me.FiscalYearDropDown.SelectedItem.Label Dim cal As System.Windows.Forms.MonthCalendar = New System.Windows.Forms.MonthCalendar() cal.Location = New System.Drawing.Point(Cursor.Position.X, Cursor.Position.Y) cal.Show() End Sub 日历应该popup在他们点击的地方,但唉,它失败了。

Excel AddIn在devise器代码中抛出exception

我正在尝试为Excel 2007开发一个AddIn,并且有一个完整的代码,可以在别人的机器上执行和debugging。 当我尝试在我的机器上的Visual Studio中启动debugging时,Excel在加载我的AddIn时给了我一个错误: “找不到或findAddIn”。 然后我点击Detailsbutton来查看堆栈跟踪: Cannot access a disposed object. ************** Exception Text ************** System.ObjectDisposedException: Cannot access a disposed object. at Microsoft.Office.Tools.SmartTagCollection.BeginInit() at ExcelAddIn1.ThisAddIn.BeginInitialization() in C:\Documents and Settings\james.cox\My Documents\Visual Studio 2008\Projects\ExcelAddIn1\ExcelAddIn1\ThisAddIn.Designer.cs:line 129 at ExcelAddIn1.ThisAddIn.InitializeDataBindings() in C:\Documents and Settings\james.cox\My Documents\Visual Studio 2008\Projects\ExcelAddIn1\ExcelAddIn1\ThisAddIn.Designer.cs:line 66 at Microsoft.VisualStudio.Tools.Office.EntryPointComponentBase.Microsoft.VisualStudio.Tools.Applications.Runtime.IEntryPoint.InitializeDataBindings() at Microsoft.VisualStudio.Tools.Applications.AddInAdapter.ExecutePhase(ExecutionPhases executionPhases) at Microsoft.VisualStudio.Tools.Office.Internal.OfficeAddInAdapter.InitializeEntryPointsHelper() 实际上,我现在已经创build了一个Excel AddIntypes的全新解决scheme,并且在代码中根本没有改变任何东西,并且仍然得到相同的错误。 这是什么意思? 在Google上search,我看到MSDN上似乎有同样的问题,但不幸的是从来没有回答他的问题。 有没有人见过这个问题?

Excel自动化:保护用户删除单个工作表

VSTO 4.0 / Office 2007 在Excel文档级自动化项目中,我有一个工作表, 不能从工作簿中删除 。 恐怕一个不小心的用户可能会意外删除它,这会导致很多悲伤(例外)。 我无法保护整个工作簿,因为用户必须能够创build,删除和修改此文件。 确切地说, 一张纸需要被保护以免被删除,但是我可能忽略了一些东西,所以如果存在这样的解决办法,我全是耳朵。 例如,我可以想象,当表单可见时,我可以Protect()和Unprotect()工作簿,但是这个解决scheme似乎很麻烦。 谷歌search产生以下的VBA代码: Private Sub Worksheet_Activate() Dim CB As CommandBar Dim Ctrl As CommandBarControl For Each CB In Application.CommandBars Set Ctrl = CB.FindControl(ID:=847, recursive:=True) If Not Ctrl Is Nothing Then Ctrl.OnAction = "RefuseToDelete" Ctrl.State = msoButtonUp End If Next End Sub 我不熟悉VBA,但是我尝试从VSTO生成的启动方法中运行: private void […]

Excel数据处理与VSTO?

我发现自己拥有一个包含大约3,000行数据的Excel电子表格,这些数据代表了我需要对SQL表格添加或更改的数据。 正如你可以想象的那样手动处理太多了。 由于我无法控制的许多原因,我不能简单地使用SSIS包或其他更简单的方法将这些更改导入到数据库中。 我唯一的select是创buildSQL脚本,将电子表格中的更改显示为MS SQL 2005。 我完全没有Office自动化或VSTO的经验。 我已经尝试在网上查找,但是我所看到的大多数教程似乎都让我感到困惑。 所以,我的想法是,我会使用.NET和VSTO遍历数据行(或使用LINQ,无论什么是有意义的),并确定所涉及的项目是插入还是更新项目。 在工作表中有颜色突出显示三angular洲,所以我想我可以使用,或者我可以查找一些关键的数据,以确定是否存在条目。 一旦我build立了我正在处理的事情,我可以调用生成SQL语句的方法来插入或更新数据。 插入将非常容易,我可以使用增量高亮来确定哪些字段需要更新更新项目。 如果将SQL输出到一个文件,或者在该行的最后一个单元格中添加给定行的SQL的testing,我都可以。 任何方向的一些示例代码,例子,如何或什么会导致我在正确的方向,将不胜感激。 我不挑剔。 如果有一些工具我不知道,或者使用现有的工具,我没有想到完成生成SQL来完成任务的基本任务的方式,那么我就是为了它。 如果您需要任何其他信息,请随时询问。 干杯, 史蒂夫

.net VSTO保存excel文件并在服务器上共享

我有一个工作要求,生产一个Excel文件,然后把它放在一个共享的文件夹,所以经理可以采取复制和咨询。 我一直在使用VSTO来开发我的应用程序的一部分。 当我执行这个应用程序,Excel文件popup,一切正常填充。 如果我在桌面上保存文档的本地副本,并再次打开它,则会收到错误消息,指出无法下载VSTO。 有没有办法: 1.执行应用程序2.在我的桌面上保存本地副本3.使用这个文件作为一个正常的Excel文件 从Visual Studio 2010中的Excel工作簿应用程序。 如果我不清楚,请问任何问题,这是我第一次使用VSTO,其中一些还不清楚。 谢谢。

为什么用户在Excel中放大时WinForms控件被禁用?

当我打开带有embedded式WinForms控件的Excel电子表格时,放大一点(ctrl + scroll),并尝试点击一个控件(用button和列表框testing),popup窗口中显示以下消息: Windows窗体控件已被禁用,因为文档已被缩放。 当缩放恢复到100%时,控件将重新激活。 放大/缩小时使控件失效的原因是什么?有什么办法可以解决这个问题,以保持控件的正常工作? 我正在使用.NET 3.5和Excel 2007。