| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1078 人关注过本帖, 1 人收藏
标题:新手遇到点小问题,请大家帮助纠错,谢谢了
取消只看楼主 加入收藏
andyee
Rank: 1
等 级:新手上路
帖 子:90
专家分:0
注 册:2014-2-12
结帖率:75%
收藏(1)
已结贴  问题点数:20 回复次数:8 
新手遇到点小问题,请大家帮助纠错,谢谢了
上一个帖子在大家的指点下,我总算做了个我所需要的程序。
我试了N次,可以运行并且达到我要的效果。
请哪位大哥帮个忙,解决我以下几个问题:
1.使用zap命令,会有提示窗口,怎么才能不跳出窗口,默认选择“是”
2. for i=2 to nrows, 在这个循环之前,我想做判断行数<=1时,用messagebox(),并且退出循环。 我尝试了N次,都提示嵌套错误。
3.如有发现其他不妥的地方,还请大家直接纠正,谢谢。

if used('dylx') then
select dylx
else
select 0
use dylx
endif
zap
set defa to ('d:\data')
for m = 1 to adir(afiles,'*.xlsx')
    findfiles='d:\data\'+afiles[m,1]
    ? findfiles
    myexcel=CREATEOBJECT("excel.application")
    myexcel.visible=.f.
    mybook=myexcel.workbooks.open("&findfiles")
    usedrange=mybook.worksheets(1).usedrange
    nrows=usedrange.rows.count
   
    for i=2 to nrows
         m1=myexcel.cells(i,1).value               
         m2=myexcel.cells(i,2).value                 
         m3=myexcel.cells(i,3).value         
         m4=myexcel.cells(i,4).value                  
         m5=myexcel.cells(i,5).value            
         APPEND BLANK        
         REPLACE DATE WITH m1,SELLER WITH m2,BUYER WITH m3,quantity WITH m4,PRODUCT WITH m5
     endfor
       myexcel.workbooks.close
       myexcel.quit
endfor
       set defa to ('d:\vfp')
搜索更多相关主题的帖子: 大哥 
2014-02-18 22:17
andyee
Rank: 1
等 级:新手上路
帖 子:90
专家分:0
注 册:2014-2-12
收藏
得分:0 
回复 2楼 TonyDeng
版主,我发现一个问题
只要有一个文件,里面行数=2,就会报错,“date的值不能是 null”
什么是什么情况?
2014-02-18 22:40
andyee
Rank: 1
等 级:新手上路
帖 子:90
专家分:0
注 册:2014-2-12
收藏
得分:0 
回复 4楼 qjbzjp
谢谢
2014-02-18 22:49
andyee
Rank: 1
等 级:新手上路
帖 子:90
专家分:0
注 册:2014-2-12
收藏
得分:0 
回复 5楼 TonyDeng
我把其中一个文件的内容改成一下这样,就会出错,但是我检查了,第二行的内容都正确的。

图片附件: 游客没有浏览图片的权限,请 登录注册
2014-02-18 22:53
andyee
Rank: 1
等 级:新手上路
帖 子:90
专家分:0
注 册:2014-2-12
收藏
得分:0 
回复 7楼 TonyDeng
恩,牢记的
我现在为了测试我每次抓取数据是否成功,所以每次清空表的内容
2014-02-18 22:56
andyee
Rank: 1
等 级:新手上路
帖 子:90
专家分:0
注 册:2014-2-12
收藏
得分:0 
回复 11楼 TonyDeng
版主,我用真实数据实测后,终于知道问题出在哪里了。
还是我的代码写的有问题,在第一个循环中,nrows 是100个文件中的最大的行数。
所以只要每个文件行数不同,那就会抓取到空值,就会报错了。

我应该每打开一个文件,就计算被打开文件的行数,每个文件按照自己的nrows做循环,是不是这样?
2014-02-18 23:25
andyee
Rank: 1
等 级:新手上路
帖 子:90
专家分:0
注 册:2014-2-12
收藏
得分:0 
新手学点东西好辛苦啊
2014-02-18 23:27
andyee
Rank: 1
等 级:新手上路
帖 子:90
专家分:0
注 册:2014-2-12
收藏
得分:0 
回复 17楼 TonyDeng
谢谢指导,我要好好学学
版主有没有书本推荐,我自己到当当买了两本vfp9.0,读完后发现内容很局限,而且给的实例错误实在太多。
2014-02-19 08:49
andyee
Rank: 1
等 级:新手上路
帖 子:90
专家分:0
注 册:2014-2-12
收藏
得分:0 
回复 17楼 TonyDeng
我发现nrows出错,根源是在usedrange 上面。

excel表中,如果数据被删除,但是usedrange.select 还是会选中原先老的区域。
所以,用usedrange.rows.count是不靠谱的,还需要对value值做<>''的判断。

谢谢版主。
2014-02-19 10:57
快速回复:新手遇到点小问题,请大家帮助纠错,谢谢了
数据加载中...
 
   



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

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