技术论坛

 回复:新问题,往Excel里插入问题的新问题!

返回主题列表
作者 主题
五一
游民

经验值:52
发帖数:10
精华帖:0
楼主    2012-09-13 09:51:33
主题:新问题,往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楼    2012-09-13 20:23:51
精华帖  主题:回复:新问题,往Excel里插入问题的新问题!
你要是不提到我,我是不打算发表意见的。
我既看不懂你的问题,也不知道如何处理。

我的原则是,避免一切形式的OLE。
提别是像那种EXCEL实时运行,记录实时数据的。
一句话,太脆弱啦!

操作人员一个无心的操作都会导致你系统崩溃。
微信公众号:PLC标准化编程,ZHO6371995
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。