学习反馈:
*************************************************************
* 用VFP判断E表中数据区域的范围 *
* 探测EXCEL表数据区域范围的代码如何写? *
* eole=CREATEOBJECT('Excel.application')
&&创建Excel对象
*
* eole.visible=.F.
&&&不显示EXCEL对象
*
* eole.Workbooks.Open('D:\TEST.XLS')
&&打开文件
*
* 之后,VFP代码如何探测EXCEL表数据区域的范围?
*
* 探知后选中,接着就可以做后续的处理
*
*************************************************************
eole=CREATEOBJECT('Excel.application')
eole.visible=.T.
&&&&为了观察,使其显示
eole.Workbooks.Open('学校名单.XLS')
****&& 以上是你打開文件的原代碼,然後用以下代碼
*!*
With eole
*!*
.Worksheets("上1").Activate
&& 激活到工作表
*!*
kz = 6
*!*
Do While Not (IsEmpty(.Cells(kz, 1).Value))
*!*
&& 仍用.Cells(row,col)引用Excel單元格
*!*
EndDo
*!*
Endwith
***-----论坛上TonyDeng的回答是以上注释的代码,以下为调试成功的代码
**********于2012年1月13日星期五完成*************
*----------------------------------------------------------
kg=.t.
eole.Worksheets(1).Activate
&& 激活到工作表
kz=3
Do While kg
eole.worksheets(1).cells(kz,2).select
dyg=eole.worksheets(1).cells(kz,2).value
*
? dyg
&&&& ************观察变化用************
DO case
CASE VARTYPE(dyg)="C"
&&&&VARTYPE(表对象.CELLS(行,列).VALUE)
IF
!EMPTY(dyg) and dyg<>".UNLL."
&&& EXCEL中的空单元格在常规格式下,VFP判断其值为“.UNLL.”
kz=kz+1
ELSE
kg=.f.
ENDIF
CASE VARTYPE(dyg)$"N"
IF
!EMPTY(dyg)
kz=kz+1
ELSE
kg=.f.
ENDIF
* 还要加其他类型的内容
OTHERWISE
kg=.f.
ENDCASE
*
? kz
&&&&& ******观察结果用******
ENDDO
*--以上完成了行的检测。 还要加上有数据列的检测就可以选定有数据的范围了
eole.Workbooks.close
&&& 关闭工作簿
eole.quit
&&& 退出Excel
RELEASE eole
&&& 释放对象变量以彻底结束EXCEL进程
*---------------------------------------------------------
*经历了N次的失败后才成功,共花时间3个小时。