| 网站首页 | 业界新闻 | 小组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
ADSL如何秒变专线,公网IP盒子了解一下千里之行 始于足下
共有 1568 人关注过本帖
标题:按条件导入Excel 数据到 listbox ??
只看楼主 加入收藏
newsoftware
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2017-7-21
结帖率:66.67%
  已结贴   问题点数:20  回复次数:13   
按条件导入Excel 数据到 listbox ??



本人想按条件导入Excel 数据到 listbox中,不知代码怎样写? 求大神帮助!

条件如下(VB操作):
1、GP9列筛选非空项
2、筛选后编号列为升序排序
3、提取Orders列的后3位数导入到VB的listbox
附件: 您没有浏览附件的权限,请 登录注册
搜索更多相关主题的帖子: 条件 导入 Excel 数据 listbox 
2017-07-25 00:22
xiangyue0510
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:86
帖 子:910
专家分:5237
注 册:2015-8-10
  得分:0 
SQL 查询语句
Select right(Orders,3) as NewID from [表名] where GP9<> "" Order by NewID  

没有用过excel来建立数据连接,也不清楚你这个是否满足SQL查询的格式。
如果是直接创建excel对象进行操作的话,就是简单的循环、判断以及字符串处理, 结果放在一个动态数组中,没有什么难的。
你自己先试着写代码,遇到具体的问题再来问。除非你什么都不懂,就是来求作业的。
2017-07-25 08:45
ZHRXJR
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:98
帖 子:879
专家分:4612
注 册:2016-5-10
  得分:10 
下面是代码,应该是这样的:
程序代码:
Dim cnn As New ADODB.Connection, RS As New ADODB.Recordset
List1.Clear
cnn.Open "Provider=Microsoft.Ace.OLEDB.12.0;Extended Properties=Excel 12.0;Data Source=" & App.Path & "\Excel表.xlsx"   'Excel表连接语句,Excel的文件名称自己修改
Sql = "select * from [Sheet1] Where GP9<>"" Order BY 编号"   'GP9列筛选非空项,筛选后编号列为升序排序
    RS.Open Sql, cnn, 3, 2    '打开工作表
    Do While Not RS.EOF
        List1.AddItem Right(RS!Orders, 3)    '提取Orders列的后3位数导入到VB的listbox
    RS.MoveNext
    Loop
    RS.Close
cnn.Close
2017-07-25 11:38
newsoftware
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2017-7-21
  得分:0 
回复 2楼 xiangyue0510
版主好!

本人在读书时自学了一点VB,现因工作经常要大量处理上述的Excel文件,写了以下代码,只能导入具体的单元格,不知上述的条件要怎么写代码?还请版主指教,感谢!感谢!!


Private Sub Command1_Click()
On Error GoTo err
Dim Xls, Xlsbook, Xlssheet
    Set Xls = CreateObject("Excel.Application")
    Xls.Visible = False '
    CommonDialog1.ShowOpen
    Set Xlsbook = Xls.Workbooks.Open(CommonDialog1.FileName) '打开共公对话框,按“取消”也会导入上次导入的文件,不知是什么原因?也请版主帮忙修改,感谢了
    Set Xlssheet = Xlsbook.Worksheets(1) '
    Xlssheet.Activate '
    List1.AddItem Xlssheet.Cells(4, 2) '只会导入具体的单元格,按条件不知要怎么写代码?还请帮忙
    Xls.Quit
    Set Xlssheet = Nothing
    Set Xlsbook = Nothing
    Set Xls = Nothing
   
err:
Exit Sub
End Sub
2017-07-26 00:01
newsoftware
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2017-7-21
  得分:0 
回复 3楼 ZHRXJR
感谢!

提示以下错误,不知是什么原因?


附件: 您没有浏览附件的权限,请 登录注册
2017-07-26 00:08
xiangyue0510
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:86
帖 子:910
专家分:5237
注 册:2015-8-10
  得分:0 
以下是引用newsoftware在2017-7-26 00:08:50的发言:

感谢!

提示以下错误,不知是什么原因?

你没有添加adodb的引用吧
2017-07-26 08:56
xiangyue0510
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:86
帖 子:910
专家分:5237
注 册:2015-8-10
  得分:10 
以下是引用newsoftware在2017-7-26 00:01:41的发言:

版主好!

本人在读书时自学了一点VB,现因工作经常要大量处理上述的Excel文件,写了以下代码,只能导入具体的单元格,不知上述的条件要怎么写代码?还请版主指教,感谢!感谢!!


Private Sub Command1_Click()
On Error GoTo err
Dim Xls, Xlsbook, Xlssheet
    Set Xls = CreateObject("Excel.Application")
    Xls.Visible = False '
    CommonDialog1.ShowOpen
    Set Xlsbook = Xls.Workbooks.Open(CommonDialog1.FileName) '打开共公对话框,按“取消”也会导入上次导入的文件,不知是什么原因?也请版主帮忙修改,感谢了
    Set Xlssheet = Xlsbook.Worksheets(1) '
    Xlssheet.Activate '
    List1.AddItem Xlssheet.Cells(4, 2) '只会导入具体的单元格,按条件不知要怎么写代码?还请帮忙
    Xls.Quit
    Set Xlssheet = Nothing
    Set Xlsbook = Nothing
    Set Xls = Nothing
   
err:
Exit Sub
End Sub

基础太不扎实了,你的代码其实基本都已经实现了,只不过需要添加一个循环和判断而已, 循环和判断可以说是VB最基本的东西。
这段代码估计都不是你自己写的吧
程序代码:
Private Sub Command1_Click()
On Error GoTo err
Dim Xls, Xlsbook, Xlssheet
    Set Xls = CreateObject("Excel.Application") 
    Xls.Visible = False '
    CommonDialog1.FileName=""      '清除上次的记录
    CommonDialog1.ShowOpen
    if CommonDialog1.FileName="" then exit sub '没有指定文件,退出sub
    Set Xlsbook = Xls.Workbooks.Open(CommonDialog1.FileName) '打开共公对话框,按“取消”也会导入上次导入的文件,不知是什么原因?也请版主帮忙修改,感谢了
    Set Xlssheet = Xlsbook.Worksheets(1) '
    Xlssheet.Activate '
    
    N1=3   '根据你的截图是从第三行开始的
    N2=10  '上限自己修改,或者给一个很大的数,在循环体中通过判断退出循环也可以
    for i = N1 to N2 
    if Xlssheet.Cells(4, 7)<>"" then List1.AddItem right(Xlssheet.Cells(4, 2) ,3)
    next i

    Xls.Quit
    Set Xlssheet = Nothing
    Set Xlsbook = Nothing
    Set Xls = Nothing
    
err:
Exit Sub
End Sub
2017-07-26 09:06
newsoftware
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2017-7-21
  得分:0 
回复 7楼 xiangyue0510
感谢版主回复!版主讲得太对了,很多东西都还给老师了,知识真的是用时方恨少呀!

但还要以下的第2个条件:“编号列为升序排序”时再导入,现导入的顺序与我想要的不一样,还请版主再指教? 感谢了。

条件如下(VB操作):
1、GP9列筛选非空项
2、筛选后编号列为升序排序
3、提取Orders列的后3位数导入到VB的listbox


现导入的顺序与我想要的不一样,如下图:



PS:
 if Xlssheet.Cells(i, 7)<>"" then List1.AddItem right(Xlssheet.Cells(i, 2) ,3)

[此贴子已经被作者于2017-7-26 23:56编辑过]

附件: 您没有浏览附件的权限,请 登录注册
2017-07-26 23:54
newsoftware
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2017-7-21
  得分:0 
回复 6楼 xiangyue0510
找不到呀?是不是要安装的?就像是office excel 的引用一样。

附件: 您没有浏览附件的权限,请 登录注册
2017-07-27 00:09
ZHRXJR
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:98
帖 子:879
专家分:4612
注 册:2016-5-10
  得分:0 
回复 5楼 newsoftware
感谢!

提示以下错误,不知是什么原因?


添加这二个引用,就可以了。

[此贴子已经被作者于2017-7-27 07:14编辑过]

附件: 您没有浏览附件的权限,请 登录注册
2017-07-27 07:12
快速回复:按条件导入Excel 数据到 listbox ??
数据加载中...
 
   



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

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