| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1636 人关注过本帖
标题:探测EXCEL表数据区域范围的代码如何写?
取消只看楼主 加入收藏
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:109
帖 子:2214
专家分:3882
注 册:2007-4-27
结帖率:95.83%
收藏
已结贴  问题点数:30 回复次数:7 
探测EXCEL表数据区域范围的代码如何写?
eole=CREATEOBJECT('Excel.application')  &&创建Excel对象
eole.visible=.F.      &&&不显示EXCEL对象
eole.Workbooks.Open('D:\TEST.XLS')     &&打开文件
之后,VFP代码如何探测EXCEL表数据区域的范围?
探知后选中,接看就可以做后续的处理
搜索更多相关主题的帖子: EXCEL Excel 如何 
2012-01-12 08:39
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:109
帖 子:2214
专家分:3882
注 册:2007-4-27
收藏
得分:0 
首先感谢TonyDeng的帮助。
  kz = 6
  Do While Not (IsEmpty(Sheets("上1").Cells(kz, 1).Value))

    sn = 0
    smax = 0
    smin = 9999
    For i = 2 To 8
      If Sheets("上1").Cells(kz, i).Value > smax Then
        smax = Sheets("上1").Cells(kz, i).Value
      End If
      If Sheets("上1").Cells(kz, i).Value < smin Then
        smin = Sheets("上1").Cells(kz, i).Value
      End If
      sn = sn + Sheets("上1").Cells(kz, i).Value
    Next
    Sheets("上1").Cells(kz, 9).Value = sn - smax - smin
    Sheets("上1").Cells(kz, 10).Value = (sn - smax - smin) / 5   
    kz = kz + 1
  Loop

未染红的几行是用来求7个评委打分去掉最高分和高低分后的总分和平均分的代码。

以上染红的几行是我在EXCEL中的VBA里判断数据的依据,如何转换成VFP中能用的?

只求每天有一丁点儿的进步就可以了
2012-01-12 17:52
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:109
帖 子:2214
专家分:3882
注 册:2007-4-27
收藏
得分:0 
我用的是EXCEL2003

只求每天有一丁点儿的进步就可以了
2012-01-12 17:52
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:109
帖 子:2214
专家分:3882
注 册:2007-4-27
收藏
得分:0 
没图,要把真相表述清晰,实际是很难的。
最合初宗的答案是6楼,其他楼的答案也是我喜欢的。

非常感谢各位朋友的帮助。再次感谢!

[ 本帖最后由 wengjl 于 2012-1-13 08:30 编辑 ]

只求每天有一丁点儿的进步就可以了
2012-01-13 08:04
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:109
帖 子:2214
专家分:3882
注 册:2007-4-27
收藏
得分:0 
学习反馈:
*************************************************************
* 用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个小时。

只求每天有一丁点儿的进步就可以了
2012-01-13 14:29
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:109
帖 子:2214
专家分:3882
注 册:2007-4-27
收藏
得分:0 
IsEmpty()是EXCEL的VBA中行得通,VFP中不行。
再次感谢

只求每天有一丁点儿的进步就可以了
2012-01-13 15:10
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:109
帖 子:2214
专家分:3882
注 册:2007-4-27
收藏
得分:0 
以下是引用TonyDeng在2012-1-13 14:37:53的发言:

是的,前面本來想提醒你注意IsEmpty()檢測空數據可能被偶爾的空單元格意外中斷,但見你寫出VBA的代碼,猜想你曾經用這種方式調試通過的,就不需另外提醒了。這種檢測法要求知道單元格的數據類型。不過你可以參考我曾經貼過的從Excel讀取數據到DBF的那個代碼,之所以設置某行首列的值為"{End}"作結束標誌,就是為了避免這類檢測,只要不是這個值,就一直讀下去。
搜索不到,请问在哪?

只求每天有一丁点儿的进步就可以了
2012-01-13 15:13
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:109
帖 子:2214
专家分:3882
注 册:2007-4-27
收藏
得分:0 
嗯,原来还有个用“.TEXT”的,快多了,代码可减少很多。谢谢

只求每天有一丁点儿的进步就可以了
2012-01-13 15:20
快速回复:探测EXCEL表数据区域范围的代码如何写?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017189 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved