Tag: vsto

将文本框内容附加到Excel工作表

我有下面的代码,但我希望我的数据被添加到Excel文件,每次我input的信息,而不是覆盖相同的单元格。 (find下一个空单元格,并添加textbox1.text数据) Imports Excel = Microsoft.Office.Interop.Excel Public Class Form1 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim xlApp As New Excel.Application Dim xlWorkBook As Excel.Workbook Dim xlWorkSheet As Excel.Worksheet Try xlApp.DisplayAlerts = False xlWorkBook = xlApp.Workbooks.Add xlWorkSheet = DirectCast(xlWorkBook.Sheets("Sheet1"), Excel.Worksheet) xlApp.Visible = False 'Don't show Excel; we can and we don't have […]

C#设置打开的工作簿

我开始用C#创build一个Excel-Add-IN。 我需要做的很简单,我需要设置一个工作簿为一个variables,工作簿已经运行,我试过这个,但没有工作 Excel.Application excel = new Excel.Application(); Excel.Workbook wb = excel.ActiveWorkbook as Excel.Workbook; wb.SaveAs("C:\\Users\\ro_sg\\Desktop\\Pasta1.xlsx"); Excel.Worksheet ws = wb.Worksheets["Plan1"]; Excel.Range range = ws.Range["A1"]; range.Value = "Success"; wb.Save(); wbvariables找不到工作簿(得到空),我看不出为什么。 请,如果你有任何人发现错误让我知道。 谢谢!

VSTO excelbutton变成隐藏列后的图像

下面的代码是在excel ribbion中button的“onClick”。 我正在使用VS15,Office2016。 通过下面的代码在单元格中添加一个button后,我隐藏了该列,该button在下一列(向右)移动,当我取消隐藏列时,它成为一个图像(在原始位置,button在下一个单元格)。 Excel.Range selection = Globals.ThisAddIn.Application.Selection as Excel.Range; Excel.Worksheet worksheet = (Excel.Worksheet)Globals.ThisAddIn.Application.ActiveWorkbook.ActiveSheet; ExcelTools.Worksheet vstoSheet = Globals.Factory.GetVstoObject(worksheet); ExcelTools.Controls.Button button = new ExcelTools.Controls.Button(); string btnName = "btn" + selection.Row + "c" + selection.Column; button.Text = "+"; vstoSheet.Controls.AddControl(button, selection.Left, selection.Top, 25, 25, btnName); PIC 在图片中,button的图像是button的原始位置 我想要隐藏的button,当它被隐藏,并保持在position.Can任何人都可以帮助我找出我做错了什么?

VSTO C#:读取总是nul的当前单元格值

场景: 我必须读取活动工作表中活动单元格的内容。 如果这个值是非空的,例如那个时候的“abc”,我必须禁用function区栏中的一个项目,并且当用户清除该单元格时,项目应该是function区栏中的启用项目。 我已经写了这个代码来获取当前单元格的值: private string CurrrentCellValue() { var BeginCell = string.Empty; var CellValue = string.Empty; var activeWorkBook = Globals.ThisAddIn.Application.ActiveWorkbook; if (activeWorkBook != null) { var sheet = activeWorkBook.ActiveSheet as Worksheet; if (!sheet.ProtectContents) { var range = Globals.ThisAddIn.Application.Selection as Range; if (range != null) { string address = range.get_Address(); string[] cells = address.Split(new char[] { […]

我如何从单元格获得字符数

目标:我正在尝试为我的Excel 2016 VSTO插件添加一项function。 该function将从活动工作表获得1列,并根据string长度更改背景颜色。 问题:我无法从单元格获取string长度。 我无法找出正确的语法,我目前有var count = row.Item[1].Value2.Text.Length; 代码:这是我的 public void CharacterLengthCheck(int length = 24, int Column = 3) { Worksheet sheet = Globals.ThisAddIn.Application.ActiveSheet; var RowCount = sheet.UsedRange.Rows.Count; Range column = sheet.Range[sheet.Cells[1, Column], sheet.Cells[RowCount, Column]]; foreach (Range row in column) { var count = row.Item[1].Value2.Text.Length; if (count > length) { row.Item[1].Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red); } […]

带有本地代码DLL的Excel 2016 VSTO插件

使用来自第三方的SDK创buildExcel插件。 SDK包含一个本地代码DLL(32位和64位版本)。 我的插件代码是在C#中,看来只有在“AnyCPU”选项下编译才能运行插件。 当我尝试运行应用程序,我得到“试图加载一个不正确的格式的程序(从HRESULTexception:0x8007000B)”这通常意味着一个64/32不匹配,错误是从试图加载第三第三方本地代码DLL。 我的问题是:我的假设是正确的关于AnyCPU,有没有一种方法可以从AnyCPU下编译的插件运行本机代码DLL? 谢谢!

VSTO Excel加载项:工作表中UDF调用的可靠计数?

代码中有一个可靠的方法来计算在工作表/工作簿中对UDF的调用吗? 另外,如果UDF被添加/删除/修改,还有什么替代scheme可以通知?

C#加载项Excel:ActiveSheet

对于我的第一个AddIn Excel,我想select工作表活动和计数表中的列和行。 我在自定义function区中创build了一个button。 private void AddValues_Click(object sender, RibbonControlEventArgs e) { int lastRow; int lastColonne; lastRow = Globals.VATTools.Application.Selection.Rows.Count; lastColonne = Globals.VATTools.Application.Selection.Columns.Count; System.Windows.Forms.MessageBox.Show("Row : " + lastRow + " " + "Columns : " + lastColonne); Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application(); xlApp.Visible = true; Microsoft.Office.Interop.Excel.Workbook xlWb = xlApp.ActiveWorkbook as Microsoft.Office.Interop.Excel.Workbook; Microsoft.Office.Interop.Excel.Worksheet xlSheet = xlWb.ActiveSheet; Microsoft.Office.Interop.Excel.Range range = […]

stringalignment,没有等宽字体

我想在excel的右键菜单中跨越多行alignmentstring。 右键菜单是这样添加的: CommandBar contextMenu = Globals.ThisWorkbook.Application.CommandBars["List Range Popup"]; CommandBarPopup subMenu = (CommandBarPopup)contextMenu.Controls.Add(Type: MsoControlType.msoControlPopup, Before: 1, Temporary: true); subMenu.Caption = "Assumptions Drill Down"; 然后迭代数据库结果并添加到正在进行的行中的subMenu当前结果如下(使用string填充): 由于字符空间不均匀(非等宽字体)列不alignment。 我试图做下面的事情来获得string的像素大小,然后隐藏回所需的string填充整数,但我不能让它的工作: private static double GetStringSize(string stringText) { Bitmap b = new Bitmap(1, 1); Graphics g = Graphics.FromImage(b); SizeF size = g.MeasureString(stringText, new System.Drawing.Font("Calibri", 10, FontStyle.Regular, GraphicsUnit.Point)); return size.Width; } 有没有一种方法来设置字体右键单击等宽(我不这么认为) 如果我不能这样做(1.)我怎样才能确保每列的间距是均匀的 […]

Excel加载项来显示所有的控件

我正在做一个加载项,将显示Excel文档中的每个控件的消息框。 但是,当我用一些Excel文档(有许多button/checkbox控件)打开它时,通过将它添加为COM加载项,没有任何反应,当我再次打开COM加载项时,我看到我的add在没有选中:( 可能是什么问题? 这是代码: private void ThisAddIn_Startup(object sender, System.EventArgs e) { Tools.Worksheet vstoWork = Globals.Factory.GetVstoObject(this.Application.ActiveWorkbook.Worksheets[0]); foreach (Control c in vstoWork.Controls) { MessageBox.Show(c.Name); } } 我的最终目标是确定所有button的控件并单击它们,但这是现在。 谢谢。