| 作者 | 主题 |
|---|---|
|
五一 游民 经验值:52 发帖数:10 精华帖:0 |
楼主
主题:新问题,往Excel里插入问题的新问题!
Dim ExcelApp,ExcelBook,activename,isopen
On Error Resume Next Set ExcelApp=GetObject(,"Excel.Application") MsgBox TypeName(ExcelApp) If TypeName(ExcelApp)="Application"Then activename=ExcelApp.ActiveWorkbook.Name For Each ExcelBook In ExcelApp.WorkBooks If ExcelBook.FullName="D:\dd.xls"Then isopen = True Exit For End If Next If Not isopen Then ExcelApp.Visible=True ExcelApp.Workbooks.Open"D:\dd.xls" ExcelApp.Worksheets(sheetname).Activate End If Else Set ExcelApp =CreateObject("Excel.Application") ExcelApp.Visible=True ExcelApp.Workbooks.Open"D:\dd.xls" ExcelApp.Worksheets(sheetname).Activate End If ExcelApp.WorkBooks("dd.xls").Activate (插入数据代码) ExcelApp.WorkBooks(activename).Activate 意图:通过脚本往指定的Excel文件里插入数据,并且不影响Excel其他文件的使用。要插入数据的Excel文件始终处于打开状态,插入时,将其激活前置,插入后再恢复。 思路:每次插入数据都判断有没有Excel进程,如果有,则在已经打开的工作薄里查找是否有"D:\dd.xls"被打开,如果已经打开,对其进行插入数据操作,如果没有打开,则打开这个文件。如果没有Excel进程则创建Excel进程并打开"D:\dd.xls"。 问题:当没有Excel进程时,MsgBox TypeName(ExcelApp)返回Empty;当有Excel进程,且不处于编辑状态时,MsgBox TypeName(ExcelApp)返回Application;关键是当有Excel进程,且有文件处于编辑状态(某个单元格处于编辑状态),MsgBox TypeName(ExcelApp)返回Object,不知道这个时候如何判断、操作。
结交工控朋友!
|
|
万泉河 至圣 经验值:29190 发帖数:10900 精华帖:131 |
3楼
主题:回复:新问题,往Excel里插入问题的新问题!
你要是不提到我,我是不打算发表意见的。
我既看不懂你的问题,也不知道如何处理。 我的原则是,避免一切形式的OLE。 提别是像那种EXCEL实时运行,记录实时数据的。 一句话,太脆弱啦! 操作人员一个无心的操作都会导致你系统崩溃。
微信公众号:PLC标准化编程,ZHO6371995
|