Tag: 过程

如何检查Excel是否打开,如果是,保存并closures它C#

我想检查excel是否打开。 如果是这样,我想保存活动工作簿并closuresexcel。 从本质上讲,我的目标是杀死所有的excelstream程,但是在这之前我想保存excel工作簿。 这是我的代码… Process[] localByName = Process.GetProcessesByName("excel"); for (int i = 0; i < localByName.Length; i++) { Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application(); Workbook wb = xlApp.ActiveWorkbook; wb.Save(); // I get an error here. "Object reference not set to an instance of an object". GC.Collect(); GC.WaitForPendingFinalizers(); wb.Close(); Marshal.FinalReleaseComObject(wb); xlApp.Quit(); Marshal.FinalReleaseComObject(xlApp); } 我读了xlApp.ActiveWorkbook以只读模式获取工作簿。 这可能是我的问题吗? 如果是这样,请提出一个成功的方法去解决这个问题。 谢谢!

(VBA命令优先)如何在vba运行期间从Internet Explorer首先打开excel文件?

我试图打开从互联网downloded excel文件,然后复制数据到另一个excel文件在vba运行与他们的命令。 但是打开excel文件的命令是在vba代码结束后执行的,而不pipe它们的位置。 例如,下面的代码显示了从站点下载和打开excel文件的整个过程。 但是在“open_excel”函数中,“InvokePattern.Invoke”实际上是在所有vba代码执行之后发生的。 我该如何执行这个呢? 我可以优先考虑这个命令吗? 或者如何等待“InvokePattern.Invoke”,直到完成? (我尝试等待时间或种类的时间操作不起作用) Sub crawler_main() ' this is main function ….. Call ieopen(ie, url_futures) 'internet explorer is opened with some url Call click_excel(ie) Call open_excel(ie) Call copy_data(wbname) ….. End Sub Sub ieopen(ie As InternetExplorer, url As String) ' open ie Set ie = CreateObject("InternetExplorer.Application") ie.Visible = True ie.navigate url […]

Excel进程的打开/closures实例仍在后台运行

我创build了一个提取excel在我的vb.net applicatino。 我写数据,保存,然后询问用户是否打开它。 问题是,如果他们select不查看它 – excel正确closures并且不在进程中运行 – 但是,当我在excel中查看并closures它时,它仍然在WTM进程中运行。 这是我的代码… Dim FileNam As String = "C:\Me\" & ReportName & Format(DateTime.Now, "yyyyMMddhhmmtt") & ".xlsx" If System.IO.File.Exists(FileNam) Then System.IO.File.Delete(FileNam) End If wBook.SaveAs(FileNam) answer = MsgBox("Your extract has been saved here: " & strFileName & vbCrLf & vbCrLf & "Would you like to view the file?",vbYesNo) If answer = […]

我想打开一个excel文件,等待用户编辑并保存

我想打开一个excel文件并等待用户编辑并保存,然后我使用这些数据。 我正在使用这个代码: string tempFileName = "test.xlsx"; MemoryStream ms = DocumentFormat.OpenXml.Extensions.SpreadsheetReader.Create(); DocumentFormat.OpenXml.Extensions.SpreadsheetWriter.StreamToFile(tempFileName, ms); var psi = new ProcessStartInfo(tempFileName); var p = new Process(); p.StartInfo = psi; p.Start(); p.WaitForExit(); p.Close(); // use the data 一切都看起来不错 但问题是,如果有一个打开的Excel文件运行此块之前,我会有一个错误p.WaitForExit(); 这是“无效操作exception”的行。 我认为原因是:如果已经有一个名为“excel.exe”的进程,我的代码将不会创build另一个等待它退出,并将合并进程或类似的东西。 我可以强制用户closures所有打开的Excel文档,然后运行这个代码,或者我自己杀了excel.exe进程,并从我的代码再次启动它。 我不想使用这些解决scheme。 请帮我找出路! 非常感谢

如何从MS Access VBA中删除我的孤儿MS Excel进程?

我正在将MS Access查询导出到模板,进行一些格式化,然后将模板另存为新名称。 当这一切都完成后,我有一个孤立的MS Excel进程,干扰时再次调用该函数。 我认为这是要么我是如何使用范围或最后我的清理问题。 此外,我是一个新手编码器,所以如果任何人有任何提示和技巧,我可以利用,使这个更好,我总是接受。 Andre的评论之后更新的代码在Rory的评论之后更新了代码 Public Function OpenOrders(strSupplier As String) 'Excel file variables Dim xlapp As Excel.Application Dim wb As Excel.Workbook Dim ws As Excel.Worksheet Dim xlsLRow As Long Dim xlsLCol As Long 'Access variables Dim db As DAO.Database Dim rs As DAO.Recordset Dim strSQL As String 'Set up access objects strSQL = […]

VBA Excel 2016 – 是否有可能导入System.Diagnostics来查看进程是否打开,然后切换到它?

我正在尝试将system.diagnostics导入到Excel VBA中,以便我可以search打开的进程,然后切换到它。 系统已经作为引用的一部分被导入,当我在对象浏览器中查看时,我看不到与system.diagnostics相关的函数,例如Process [],Process.GetProcessesByName(procName); 等等 有没有办法导入system.diagnostics,或者不同的方式去find在Windows中打开的程序,并切换到它? 可能使用shell引用呢? 最后,我希望电子表格与它find的程序进行交互,比如使用user32.dll来切换到这个窗口(Program.MainWindowHandle,True); 抓住一些数据并将其拉入。 也许这完全不在Excel VBA可以做的范围之内,而是我应该在Excel以外构build它。 当然,我更愿意在Excel中做这一切。 提前致谢!

从C#应用程序执行Excel

我想用C#中的一个类打开一个文件,使用一个进程,位于一个directoy中,我问用户。 ProcessStartInfo startInfo = new ProcessStartInfo(); startInfo.FileName = "EXCEL.EXE"; startInfo.Arguments = Here goes the directory I asked Process.Start(startInfo); 问题是,当用户指定的文件的位置有一个空格时,excel认为我发送了两个相同的位置。 例如,用C:\ Users \ dj \ Desktop \ da ba excel尝试打开“C:\ Users \ dj \ Desktop \ da”作为一个文件,同时“ba”作为另一个文件。 我怎样才能发送一个位置,其中有一个空间的Excel,没有这个错误? 像C:\ Users \ dj \ Desktop \ daba这样的地址,没有空间,完美的工作。

程序完成,但我收到这样的警告:“太多的输出处理”

我目前正在使用Python和PyQt创buildExcel过滤工具。 目标是能够过滤出学生的GPA,并根据他们的年级和GPA的截止值输出一定的结果。 当我在我的IDE上运行程序PyCharm程序运行过滤并运行完成,我能够输出过滤结果,但是在这个过程中,我收到错误“太多的输出到进程”。 我尝试使用Cx_freeze在IDE外部构build我的程序,当我运行exe版本时,程序将只通过filter运行几行excel文件,然后停止。 我相信这是由于我以前的错误,我会得到在Excel文件中的太多的文本行。 我的excel文件有大约6000行数据和16列。 这是代码的一部分: def filterCommand(self): global workbook2 wb = xlrd.open_workbook(defaultName) sheet = wb.sheet_by_index(0) workbook2 = xlwt.Workbook() worksheet2 = workbook2.add_sheet('Test') styles = xlwt.easyxf('pattern: pattern solid, fore_colour yellow') #Then get values of each column. Excuse first item which is header term = sheet.col_values(0)[1:] ids = sheet.col_values(1)[1:] fnames = sheet.col_values(3)[1:] lnames = sheet.col_values(2)[1:] gender […]

SQL Server – 如何删除一些列的行而不会中断logging的其余部分

I have it — — — — 01 A1 B1 99 01 A1 B1 98 02 A2 B2 97 02 A2 B2 96 I need this — — — — 01 A1 B1 99 98 02 A2 B2 97 96 ———— 我不能重复我将会出现在excel中的数据,我的结果应该如此。 在我的实际表格中,最后一列是表单的答复,第一列(不能重复的)是客户数据(电话,姓名等)。 这个“查询”的最终结果将填充“数据表”,并将以“xlsx”文件forms呈现。 感谢分享知识^^

C#excelclosures过程还剩下

我打开并closures了这样的mC#excel书 Microsoft.Office.Interop.Excel.Application oXL = null; Microsoft.Office.Interop.Excel.Workbook excelWorkbook = null; try { excelWorkbook = oXL.Workbooks.Open(MyFile, 0, false, 5, "", "", false, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "", true, false, 0, true, false, false); ….. …. …. excelWorkbook.Save(); excelWorkbook.Close(Microsoft.Office.Interop.Excel.XlSaveAction.xlSaveChanges, Type.Missing, Type.Missing); oXL.Quit(); excelWorkbook = null; oXL = null; } catch { } 但是在任务列表中还有stil lan EXCEL.EXE进程运行,为什么呢? 当我完成后,我怎样“杀”一切有关excel的东西? 用“.Quit()”是不够的,并把引用放在null? 或者有没有被解除引用的C#堆中留下了一些神奇的引用? /斯特凡