当我使用自动化启动Excel时,Excel中有一个Excel UDF类可用于Excel中,这是一个问题。当我从第三方应用程序启动Excel时,我正在编写一个插件,需要它才能运行。当通过自动化打开Excel时,Excel UDF不可用
这是我的理解,这是通过设计,但我需要有一种方法来使我的UDF可供用户通过自动化打开Excel时。
我为Excel 2007创建了一个VSTO插件和UDF类。我复制了代码并按照书面指示完成了该网页的指示,除非我按照指示替换了GUID。 http://csharpramblings.blogspot.ca/2011/09/communicating-between-vsto-and-udfs-in.html
当我打开Excel时,我看到我的新加载项和UDF显示在函数列表(插入函数)中可用。所以我知道它在起作用。
然后我创建了一个使用Excel自动化来打开Excel的应用程序。
这是一个Windows窗体应用程序,我在Form1上放了一个按钮。我添加了一个对Microsoft.Office.Interop.Excel(版本1.6.0.0)的引用,它可以解决(在我的机器上)到C:\ Windows \ assembly \ GAC \ Microsoft.Office.Interop.Excel \ 12.0.0.0__71e9bce111e9429c \ Microsoft。 Office.Interop.Excel.dll
我从http://support.microsoft.com/kb/302084得到了下面的代码,虽然我删除了一些将数据放入工作表单元的代码,因为我不需要它 - 我只是想要一个打开Excel的例子自动化。
Form1的C#代码为我的示例程序:
using System;
using System.Reflection;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;
namespace ExcelAutomationTest
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, System.EventArgs e)
{
Excel.Application oXL;
Excel._Workbook oWB;
Excel._Worksheet oSheet;
Excel.Range oRng;
try
{
//Start Excel and get Application object.
oXL = new Excel.Application();
oXL.Visible = true;
//Get a new workbook.
oWB = (Excel._Workbook)(oXL.Workbooks.Add(Missing.Value));
oSheet = (Excel._Worksheet)oWB.ActiveSheet;
//Add table headers going cell by cell.
oSheet.Cells[1, 1] = "First Name";
oSheet.Cells[1, 2] = "Last Name";
oSheet.Cells[1, 3] = "Full Name";
oSheet.Cells[1, 4] = "Salary";
//Make sure Excel is visible and give the user control
//of Microsoft Excel's lifetime.
oXL.Visible = true;
oXL.UserControl = true;
}
catch (Exception theException)
{
String errorMessage;
errorMessage = "Error: ";
errorMessage = String.Concat(errorMessage, theException.Message);
errorMessage = String.Concat(errorMessage, " Line: ");
errorMessage = String.Concat(errorMessage, theException.Source);
MessageBox.Show(errorMessage, "Error");
}
}
}
构建Windows窗体应用程序,它可以自动的Excel。运行应用程序。它将启动Excel。转到“公式”选项卡并单击“插入函数”。查看“所有”功能。在我的机器上,MYINT不在列表中。
使用自动化打开Excel时是否可以使MYINT功能可用?有人建议我可以使用VSTO ThisAddIn_Startup()中的Excel.Application对象来加载UDF,但是我找不到如何做到这一点的示例,并且帮助我的人不知道。
我问MSDN Excel和VSTO论坛寻求帮助,无法获得下一步该做什么的清晰图片。有一些类似的问题,但没有什么相同的,围绕StackOverflow。有没有人有任何想法?
不知道为什么我无法找到.Title属性在我的VS2010。我只能使用ProgID。 – woodykiddy