Tag: com interop

为什么我在使用FormulaArray的时候总是收到COMexception

try { sheet1.get_Range("M34").FormulaArray = "=SUM(IF(Sheet2!D6:D122=M31,IF(Sheet2!P6:P122>0,Sheet2!I6:I122/SUMIFS(Sheet2!I:I,Sheet2!C:C,Sheet2!C6:C122,Sheet2!D:D,Sheet2!D6:D122)*ROUNDUP(SUMIFS(Sheet2!I:I,Sheet2!C:C,Sheet2!C6:C122,Sheet2!D:D,Sheet2!D6:D122)/Sheet2!Q3,0),0),0))"; } catch (COMException ex) { MessageBox.Show(ex.Message); } 任何人都知道为什么上面的代码抛出COMexception。 公式工作正常,如果我进入Excel并按Ctrl + Shift + Enter,但是当我的程序写入Excel,它会抛出一个exception。 我在我的程序中的其他地方使用Range.FormulaArray,它工作正常。 也许有人可以指出这个问题,因为我疯了,似乎其他人有同样的问题,但没有解决scheme在线。

如何在.NET中清除COM引用时应用程序将保持运行?

我正在开发一个启动Excel的新实例的.NET程序,做了一些工作,然后结束,但必须让Excel运行。 稍后,当程序再次运行时,它将尝试挂钩到前一个实例。 在这种情况下处理COM对象释放的最好方法是什么? 如果我第一次没有在应用程序对象上执行“ReleaseComObject”,那么第二次运行得到活动对象,最后释放com对象,我有内存泄漏吗? 以下简化代码说明了我正在尝试做的事情: private Microsoft.Office.Interop.Excel.Application xlsApp; private Microsoft.Office.Interop.Excel.Workbook xlsWb; public void RunMeFirst() { //Start a new instance System.Type oSEType = Type.GetTypeFromProgID("Excel.Application"); xlsApp = Activator.CreateInstance(oSEType); xlsWb = xlsApp.Workbooks.Open("C:\\test1.xls"); //Do some stuff xlsWb.Close(false); Cleanup(ref xlsWb); //Do not quit Excel here //No Cleanup of xlsApp here? Is this OK? System.Environment.Exit(0); } public void RunMeSecond() { //Hook […]

在Excel VBA中,如何将关键variables保存在“状态丢失”(不写入单元格或文件)?

Excel VBA是一个灵活的开发环境。 这是编译。 但是,有时在开发过程中会出现“国家损失”。 所有variables都被拆除时,“状态损失”就是这样。 事实上,VBA有一个选项“状态丢失前通知”选项进行分类。 在所有情况下都不能编辑和继续编码,这并不奇怪。 然而,有时在生产中运行状态损失,因为打开一些其他的工作簿可能会导致您的应用程序会话的创伤(相信我,它发生!) 我知道可以将数据保存到工作表单元格甚至文件中,但是这对于保留类的实例是不合适的,特别是如果这是整个对象图的锚。 所以在坚持记忆variables的情况下,如何坚持状态过失?

如何判断Excel应用程序是否处于单元格编辑模式?

我正在使用.NET的COM Interop编写一个Excel Addin。 我有一个命令,popup一个对话框,从对话框中,我做了一些工作,如收集来自使用的几个工作表范围内的数据。 问题是,如果一个单元格处于编辑模式,我需要做的一些调用将会抛出exception。 我想事先确定Excel处于编辑模式,这样我可以提醒用户先完成编辑单元格。 有任何想法吗?

使用.Net Interop从Excel获取DateTime值时缺less毫秒

如果我通过.Net COM Interop使用Range.set_value将DateTime值放入Excel单元格中,然后使用Range.get_value检索同一单元格的值,则不会返回该值的毫秒部分,尽pipe其他所有内容都是正确的。 这是一个错误? 什么是解决方法? 我猜测使用Value2属性可能会有所帮助。 有其他人试过吗?

Excel互操作对象不被释放

我正在使用下面的方法。 在这个代码块执行后,我发现Microsoft Excel仍然通过检查任务pipe理器在后台运行。 编辑 :完全一个 Microsoft Excel后台进程仍然生活。 我刚刚添加了这个function,因为当我第一次开始使用Excel和Interop COM对象时,有时很多进程在函数执行完成后仍然保持运行。 如何确保在执行当前函数后Excel不在后台运行? 我用全局范围声明这些variables,因为几个函数最终需要它们: private Excel.Application xls = null; private Excel.Workbooks workBooks = null; private Excel.Workbook workBook = null; private Excel.Sheets sheets = null; private Excel.Worksheet workSheet = null; 此方法用于检查给定工作簿中是否存在工作表: private bool sheetExists(string searchString) { xls = new Excel.Application(); workBooks = xls.Workbooks; workBook = workBooks.Open(workbookPath); // <- Where […]

Range.Formula是一个COM对象吗?

换句话说,我需要释放它与Marshal.ReleaseComObject() ? 我知道Range是,它需要被释放,但我不知道Formula 。

自动填充错误在Excel中c#

错误语句显示“无法获得Range类的自动填充属性”。 但是,自动填充属性确实是在范围类,因为我检查。 有谁知道如何解决这个错误? 我已经尝试在谷歌search,并没有适当的答案。 此外,我已经尝试转换VBA中的代码,并在VB中正常工作。 using Microsoft.Office.Interop.Excel; Application.Range["H2"].Select(); Selection.AutoFill(Destination: mdlAMain.xlApp.Range["H2", "H" + myRow], Type: XlAutoFillType.xlFillDefault);

正确closuresC#excel COM对象

我想正确closuresExcel的COM对象,如Excel应用程序工作簿和工作表。 我浏览了本网站和其他网站上的所有解决scheme。 没有任何工作 唯一的办法是运行一个循环来杀死或优化进程。 有没有更好的方法或杀死只有一个Excel文件的过程? #region VARIABLE int nColumn = 0; int nIMPORT = 1; int endofsheet = 0; string IMPORTfilepath = null; string nsheet = null; string nCell = null; string lastfilename = ""; double rRFDS = 0; double cRFDS = 0; List<String> filename = new List<String>(); object misValue1 = System.Reflection.Missing.Value; //Opening Central DB […]

COMException(0x80010108 – RPC_E_DISCONNECTED)closuresExcel.Workbook时

当我运行下面的代码,我得到下面的exception: ''# NOTE: ExcelApp is a Private main form variable Dim ReportBooks As Excel.Workbooks = ExcelApp.Workbooks Dim ReportBook As Excel.Workbook = ReportBooks.Open(localFilename) Dim ReportSheet As Excel.Worksheet = ReportBook.Sheets("Report") ''# Retreive data from sheet ReleaseCOM(ReportSheet) ReportBook.Close(True) ''# Error raised here ReleaseCOM(ReportBook) ReleaseCOM(ReportBooks) ERROR: COMException was unhandled The object invoked has disconnected from its clients. (Exception from […]