Tag: 互操作

你如何从VB.NET另一个用户运行另一个.exe?

你如何从VB.NET运行另一个.exe,但作为另一个用户? 我希望像“左键单击 – >运行 – >input用户/密码 – >单击确定”如果我这样做,我的应用程序运行按预期(我需要运行它作为另一个用户访问一些networking中的文件夹) 但如果我在VB.NET System.Diagnostics.Process.Start(System.Windows.Forms.Application.ExecutablePath, PARAMETER, USER, PASSWORD, DOMAIN) 该应用程序与其他用户一起运行..但Excel(在我的应用程序与Interop)无法在受限制的文件夹中打开该文件。 (我再次运行相同的应用程序,但用不同的用户,只是为了避免创build更多的.exe文件…但我已经尝试过与VBScript) 再次,Process.Start FAILS使用其他用户打开Excel …但左键单击 – >作为成功运行…为什么? 其他方式?? 这是应用程序所做的: 打开应用程序 检查是否有一个参数 如果没有参数,则与其他用户重新启动应用程序并发送一些参数 如果有一个参数打开excel 打开一个xlsx文件 但如果我双击… Excel打开…使用50%的CPU,并给我的错误,它无法打开文件… 如果我直接运行它与所需的用户,并通过…一切正常执行任何build议如何解决这个问题? (模拟工作正常..但它打开Excel与实际用户..不是有权利的人) 谢谢!

Excel互操作(Visual Studio C#) – “embedded互操作types”属性

在Visual Studio中添加interop.excel引用到我的C#winform后,我不再能够“编辑并继续”…. 错误提示“ 修改包含embedded式互操作types/成员的方法”将阻止在“编辑并继续”处于启用状态时继续执行debugging会话。要启用编辑并继续,请尝试将“embedded互操作types”属性设置为“False “debugging时COM参考 ” 不幸的是,当我将“Embed Interop Types”属性设置为“False”时,VS给了我以下代码的错误: ws.Cells [2,1] .Value = xxx; 错误说“ '对象'不包含'值'的定义,并且没有find接受types'对象'的第一个参数的扩展方法'值'可以find(你是否缺less一个using指令或程序集引用? 我已经找遍了所以没有运气的答案…有人可以帮助吗?

在Excel中查找和replace文本中指定的字体名称

我正在使用Microsoft Excel 12.0对象库。 我的目标是find具有指定字体名称的文本,并用新文本replace。 Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application(); xlApp.FindFormat.Font.Name = "Arial"; workSheet.Cells.Replace('a', 'b', Type.Missing, Type.Missing, Type.Missing, Type.Missing, xlApp.FindFormat, Type.Missing); 但它不起作用。 那么如何查找指定字体名称的string并用新stringreplace? 谢谢!

c#-excel interop – 在工作簿上创build图表,而不是在工作表中

使用C#MS Excel互操作库,我想以编程方式在工作簿上,而不是在工作表上创build一个新的图表。 下面的代码允许我在现有的_Worksheet(工作表)上创build一个图表。 using using Microsoft.Office.Interop.Excel; _Worksheet sheet; (assume this is a reference to a valid _Worksheet object) ChartObjects charts = (ChartObjects)sheet.ChartObjects(Type.Missing); ChartObject chartObject = (ChartObject)charts.Add(10, 80, 300, 250); Chart chart = chartObject.Chart; chart.ChartType = XlChartType.xlXYScatter; 有谁知道如何去创build工作簿上的图表(即图表是图表)。

C#编程访问Excelmacros

我正在处理Excel文件的目录以获取有关每个文件的信息。 我正在尝试使用C#Excel互操作来收集有关与这些文件中的一些相关的VBAmacros的信息。 代码如下。 问题是,没有一个Excel文件具有编程访问macros启用。 我可以在文件的本地副本上手动切换,但是我目前只能读取文件的目录。 有什么办法可以暂时改变我的代码内的编程访问设置(读取VBA代码,不作任何改变),没有写权限? 此外,我只知道如何手动更改程序访问(通过每个Excel文件中的设置)。 看到我可能最终只需要读/写访问权限,有没有什么办法可以在批处理中做到这一点,以节省大量的时间手动打开和closures文件? VBA.VBProject project = WorkBook.VBProject; VBA.VBComponents VBComponents = project.VBComponents; string projectName = project.Name; VBA.vbext_ProcKind procedureType = Microsoft.Vbe.Interop.vbext_ProcKind.vbext_pk_Proc; VBA.VBComponent vbFunction; foreach (Excel.Worksheet sheet in VBComponents) { vbFunction = sheet as VBA.VBComponent; if (vbFunction != null) { VBA.CodeModule componentCode = vbFunction.CodeModule; int componentCodeLines = componentCode.CountOfLines; int line = 1; while […]

如何消除尾随空行/列

我正在使用Microsoft Interop将excel文件转换为csv文件。 我使用sheet.SaveAs函数。 我最初的excel工作表有100行的数据从A1到AZ列。 我只需要在CSV中的数据从A1到AP,只有50行。 使用范围函数,我删除行51-100,我清除同一行的内容,仍然当我保存为CSV,我发现行51-100如下:(只是逗号)。 我不想在CSV中看到这些逗号。 ,,,,,,,,,,,,, AQ-AZ也是如此。 我不希望这些数据在CSV中。 我使用Range函数删除,清除内容,但是这些AQ-AZ列在CSV文件中以“,,,,,,,,,,,,,,,,,,,,,”的forms出现。 有没有办法将XLS保存为CSV,只有我想要在CSV文件中看到的范围。 有没有办法控制进入CSV文件的范围? 总之,我想在CSV文件中看到列A1到AP的数据为50行。 没有空的尾随“,”S。 有没有办法?

Excel自动化:closures事件丢失

另外大家好, 我正在通过C#中的Interop进行Excel自动化,并且我想在工作簿closures时通知。 但是,工作簿上没有closures事件,也没有应用程序上的退出事件。 有没有人做过? 我怎样才能写出一段代码,它对正在closures的工作簿起作用(只有在工作簿真的closures的情况下才会执行) 理想情况下,closures工作簿后应该会发生,所以我可以依靠该文件来反映所有更改。 关于我到目前为止发现的细节: 有一个BeforeClose()事件,但如果有未保存的更改,则在用户被问及是否保存它们之前引发此事件,所以此刻我可以处理该事件,我没有最终文件,我不能释放COM对象,这两个我需要有/做的事情。 我甚至不知道工作簿是否会被closures,因为用户可能会select放弃closures。 然后有一个BeforeSave()事件。 因此,如果用户select“是”来保存未保存的更改,则在 BeforeClose() 之后执行BeforeSave()。 但是,如果用户select“中止”,然后点击“文件 – >保存”,则执行完全相同的事件顺序。 此外,如果用户select“否”,则根本不执行BeforeSave()。 只要用户不点击这些选项中的任何一个,也是一样的。

C#Excel互操作:从HRESULTexception(DISP_E_BADINDEX)

我试图部署一个在我的开发电脑和其他工作站上工作正常的应用程序。 但是,有些用户收到我似乎无法理解的错误。 该程序是一个具有Excel.Interopfunction(Office 2003)的C#dotNet应用程序。 我似乎遇到了“索引”的问题。 奇怪的是,这个部分在一些机器上工作完美,但在其他机器上抛出一个致命的exception…所有的机器是与Office 2003的Windows 7。 这是相关的代码: //Change sheet code (index is 1, 2, 3) -> errors at #2 public void ChangeWorksheet(int sheetIndex) { if (_OnXLSEvent != null) _OnXLSEvent(string.Format("TEMP: working on page {0}", sheetIndex)); _WS = _WSs[sheetIndex]; _Shapes = _WS.Shapes; _PageSetup = _WS.PageSetup; if (_OnXLSEvent != null) _OnXLSEvent(string.Format("TEMP: working on page {0}", _WS.Name)); […]

如何validation文件是否是一个有效的Excel电子表格?

我已经在这里做了一些search,在这个 , 这个 ,还有更多,但没有线索,所以我不得不问你们。 我试图通过Interop打开Excel文件,并且安装了Office 2007,所以我使用的是Microsoft.Office.Interop.Excel版本14.0 。 当我尝试打开一个有效的xls文件,一切运行良好。 但是,如果我尝试通过Interop打开无效文件(如位图或可执行文件),则Excel将打开它而不会发出抱怨或警告。 我如何检测Excel有一个无效的工作簿文件加载,没有阻止与警报? 我正在尝试编写Excel对象读取器的unit testing。 其中一种情况是尝试打开无效文件。 一些代码来帮助:应用程序创build: _app = new Application() { Visible = false, DisplayAlerts = false, // <– I don't want to remove this. AskToUpdateLinks = false, }; 工作簿开放: _workbooks.Open(filename); _workbook = _workbooks.get_Item(1); // 1-based. _worksheets = _workbook.Sheets; 编辑:只是添加1个更多的信息:Excel加载无效的文件。 如果将DisplayAlerts设置为true,则表示抱怨(打开一个对话框),通知工作簿看起来已经损坏,但是如果DisplayAlerts设置为false,则它将加载文件,如下所示:

Excel Interop打印

我需要使用以下打印设置打印选定区域的Excel表单(我使用Range.Select()select): 打印机:Microsoft XPS文档编写器 打印select 景观定位 A4 正常边距 在一页上适合工作表 我怎样才能达到这个使用_Worksheet.PrintOut或_Worksheet.PrintOutEx? 提前致谢!