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,不知道这个时候如何判断、操作。