Tag: vsto

Microsoftfunction区button从外接程序执行function

好的,所以我做了大量的search,试图find关于这个话题的信息,而且我几乎空手而归。 也许我不是在寻找正在尝试完成的正确术语。 我的问题是,我已经写了一个MS Excel加载项的function,我遵循微软的指示作为一个起点,但他们的教程有代码执行每次用户保存文档。 我的目标是在我devise的function区上有一个button执行此function,而不是保存button。 这是我遵循自己启动的Microsoft文章: https : //msdn.microsoft.com/en-us/library/cc668205.aspx 我也在这里发现了这个问题,但是它没有足够的细节来弄清楚如何为自己实现解决scheme: 如何将一个function区button连接到Excel加载项中定义的函数? using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Xml.Linq; using Excel = Microsoft.Office.Interop.Excel; using Office = Microsoft.Office.Core; using Microsoft.Office.Tools.Excel; namespace ExcelAddIn1 { public partial class ThisAddIn { void FormatTime(Microsoft.Office.Interop.Excel.Workbook WB, bool SaveAsUi, ref bool Cancel) { /////MY FUNCTION BODY HERE////// } private void […]

Excel VSTO C# – 格式雷达图表类别和轴标签

我试图改变雷达图表的轴和类别标签上的文本的格式,我的代码适用于轴的字体大小,并给出了所需的输出,但是我也收到一个错误,一旦代码在ax.Format.TextFrame2.TextRange.Font.Size = 7;轴上运行ax.Format.TextFrame2.TextRange.Font.Size = 7; debugging出错: mscorlib.dll中发生了“System.Runtime.InteropServices.COMException”types的exception,但未在用户代码中处理。 附加信息:未指定错误(HRESULTexception:0x80004005(E_FAIL)) 如何更改分类标签以及在完成操作后可能会导致错误的原因? 代码如下: public static void FormatRadarLabels(Excel._Application xlApp) { Excel.Chart chart = null; xlApp.ScreenUpdating = false; try { chart = xlApp.ActiveChart as Excel.Chart; foreach (Excel.Axis ax in chart.Axes()) { ax.Format.TextFrame2.TextRange.Font.Size = 7; } } finally { if (chart != null) Marshal.ReleaseComObject(chart); xlApp.ScreenUpdating = true; } } 这个方法被另一个类中的方法调用,它被一个excel工具栏上的button调用,但是我不认为这个错误对于任何外部的东西都没有任何问题,就好像我评论或者删除了这段代码,其余的格式化工作精细。 感谢您提供的任何帮助或build议。 […]

从process.StandardOutput.ReadToEnd()读取进程启动时返回null

AIM:从VSTO Excel Addin Project启动一个新的进程,使用putty(plink)将ssh到unix机器上,在那里运行一些脚本并读取StandardOutput以获得结果。 问题: process.StandardOutput.ReadToEnd(); 每次都返回空string。 但是当相同的function是从控制台应用程序调用它完美的作品。 我认为可能有一些身份validation问题,因为在以前的情况下,Excel正在启动该过程,并在稍后用户启动。 我的代码: public partial class ThisAddIn { const String DOMAINS_COMMAND ="some_command"; string HOST = "some_host"; private void ThisAddIn_Startup(object sender, System.EventArgs e) { execute(); } private void ThisAddIn_Shutdown(object sender, System.EventArgs e) { } public void execute() { try { Process p = new Process(); ProcessStartInfo ps = new […]

如何使用VSTO将项目添加到Excel菜单?

我正在开发一个使用VB.NET的Excel加载项。 在这个插件中,我创build了一个新的function区,在这个function区中将会有一个Excel工作簿的菜单,菜单的每一行都应该有一个工作簿工作表的子菜单(正在检索这些文件名,path和表单来自DB)。 我有问题试图插入这些工作簿作为菜单项。 我创build了一个DAL来检索我需要和testing的所有数据,它的工作原理,我的问题是添加工作簿列表的每个元素。 任何build议,欢迎。 Public Class Ribbon1 Private Sub Ribbon1_Load(ByVal sender As System.Object, ByVal e As RibbonUIEventArgs) Handles MyBase.Load Dim listaWorkbooks As New List(Of Workbook) Dim serviceExecuta As New ServiceExecuta listaWorkbooks = serviceExecuta.BuscaWorkbooks() For Each Workbook In listaWorkbooks Menu1.Items.Add(Workbook.getNome) Next End Sub End Class

来自HRESULT的exception:0x800A03EC – 在Excel加载项中将数组写入范围

我在C#中的Excel加载项中有以下代码: long lngArrayLength = 14; long lngArrayLength2 = array2.Length; Excel.Range rngValues1 = (Excel.Range)wsNew.Cells[2, 1]; Excel.Range rngValues2 = (Excel.Range)wsNew.Cells[lngArrayLength2 + 1, lngArrayLength]; Excel.Range rngValues = wsNew.get_Range(rngValues1, rngValues2); rngValues.Value = array2; 作为参考,array2有十个元素,每个元素有14个子元素。 例: array2 = { (0, "a0", "b0", "c0"… "n0"), … {9, "a9", "b9", "c9"… "n9) } 上面的rngValues大小为{[1..10,1..14]} 每次尝试运行时,都会出现以下错误: 来自HRESULT的exception:0x800A03EC 我已经排除了: 1)文件格式,将Book1保存为.xlsx不起作用 2)达到列或行限制,与数千个元素或10个元素做同样的事情 3) [0] vs […]

从VSTO加载项调用Excel C API

从Excel VSTO(.NET)加载项中,我需要调用Excel C API函数(例如Excel12 ),以避免在Excel数据types( xloper12 )和受pipe理数据之间进行转换。 我知道如何访问XLL中定义的函数。 所以原则上,我可以写一个XLL或多或less的“转发”我需要的function。 但是我想避免一个“虚拟的”XLL。 这个被接受的答案 从C#调用Excel / DLL / XLL函数 问题表明我在xlcall32.dllfind了我需要的function。 我不确定这个假设是否正确。 但是,我怎么把这一切放在一起呢? 我的VSTO插件是否必须加载 xlcall32.dll ?

VSTO AddIn for Excel – 如何防止自定义任务窗格失去焦点?

我为MS Excel创build了一个简单的AddIn,但自定义任务窗格有问题。 自定义任务窗格控件是在WPF中编写的,但是每当用户尝试将某些数据input到之前使用鼠标select的CTP中的文本框字段中时,Excel将使用焦点并将其返回到所选单元格。 我可以防止这种行为? 用户需要应用的解决scheme是按下键盘上的“Esc”button,然后再次selectCTP中的input控件并写入。 具有上下文菜单的控件也是如此。 当用户用鼠标右键点击控件时,上下文菜单很快就可以看到,焦点返回到Excel工作表。 如果用户正在编辑某个单元格,而不能在完成编辑之前selectCTP中的任何一个控件,但可以访问function区button。 请指出我现有的解决scheme,如果适用。

使用Visual Studio 2015创buildExcel文档级别自定义

我通过使用Visual Studio 2015社区创build了一个Excel文档级别的自定义,这在我的笔记本电脑上工作正常,但我有麻烦分发给其他人的定制,为此我使用ClickOnce。 我是Visual Basic和ClickOnce的新手,我的编程技能仅限于VBA。 因此,任何解决我的分销问题的解决scheme,非常感激。 我遵循这个微软教程( https://msdn.microsoft.com/en-us/library/cc837158.aspx )的步骤,以分配给其他人的自定义。 我上传了我公司的SharePoint环境中的文件,并将此URL设置为VSTO部署清单查找更新的位置。 我上传的文件是Excel文件,VSTO部署清单,安装程序和Application Files文件夹。 如果我从SharePoint下载这些文件并运行Excel文件,它工作正常。 但是,当大学在另一台笔记本电脑上下载文件并运行Excel文件时,会出现无法从URL下载VSTO的错误。 我们运行安装程序时遇到类似的错误。 当我从SharePoint文件夹在线运行Excel文件时,出现错误消息,该位置未包含在受信任的位置列表中。 我们希望将这个定制分发给客户,最好是通过发送每个电子邮件所需的文件。 如果我正确地理解了这个链接中的答案( 关于如何部署和共享VSTO解决scheme的最佳内容 ),那么应该可以在不连接到互联网的情况下运行定制,方法是将所有必需的文件保存在硬盘上。 虽然,我认为我正确地遵循了这些说明,但我无法在另一台电脑上运行定制。 我该如何解决我的分销问题? 通过使用ClickOnce或其他(更好的免费)软件。

什么自动格式化Excel复制数据时执行?

我正试图将VBAfunction移到.NET Excel加载项目中。 这是一个数据导入工具,在导入数据之前进行一些数据标准化。 但是我有问题来理解Excel自动生成的数据规范化(捕获我需要在.NET端重新实现的所有转换)。 特别是 – Excel导入文件有string的范围,基本上有数千个分隔符的数字 – 现在,使用VBA脚本在Excel中复制这个范围会自动将这些string转换为数字(并删除这些分隔符)。 对于date时间值,有非常多的自动转换来识别string值中的date。 我试图find关于这个自动格式化的信息(一个列表是什么转换是从Excel复制到Excel的),但到目前为止,我只能find一些关于如何防止自动格式化的黑客,但没有什么信息确切的格式化规则/逻辑是在string值上执行的。 任何人都可以分享这些信息吗?

VSTO:Excel在vb.net中调整范围

我试图从VBA切换到VSTO,但是当我尝试调整范围时遇到了一些我不熟悉的错误。 我有下面的代码应该最终能够分割一个单元格的行数x的范围。 我已经在VSTO中创build了一个插件。 当我通过按下Excel中的button来运行代码Visual Studo给了我一个“COMExeption是由用户代码未处理”,它highligts最后一行,我试图调整和输出范围。 我究竟做错了什么? Private Sub Button1_Click(sender As Object, e As RibbonControlEventArgs) Handles Button1.Click Dim sheet As Excel.Worksheet = Globals.ThisAddIn.Application.ActiveSheet Dim inputrange As Excel.Range 'Dim cell As Excel.Range Dim numberOfOutputRows As Long Dim numberOfOutPutColumns As Long Dim outputRange As Excel.Range Dim inputArray(0, 0) As Long Dim i As Long Dim iRow As Long […]