注册 登录
编程论坛 VB6论坛

请求高手帮忙写段代码批量从表格中提取某几个字段列到新表中并求和

jackh 发布于 2019-01-02 21:00, 4140 次点击
只有本站会员才能查看附件,请 登录
18 回复
#2
jackh2019-01-02 21:04
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录
#3
jackh2019-01-02 21:05
从地块信息中提取信息并汇总到图2新表中
#4
jackh2019-01-02 23:01
求代码
#5
icecool2019-01-03 10:34

程序代码:

Private Sub CommandButton1_Click()


 Dim dbAddr
    dbAddr = ThisWorkbook.Path & "\" & "官塘驿镇白羊村一组村民小组湖北地信Excel文件.xls"
    Dim Conn As ADODB.Connection  '连接
    Set Conn = New ADODB.Connection

    Dim rs As ADODB.Recordset
    Set rs = New ADODB.Recordset
    connstrxls = "DBQ=" & dbAddr & ";DefaultDir=;DRIVER={Microsoft Excel Driver (*.xls)};"
    Conn.Open connstrxls
Sql = "select * from [地块信息$] order by 承包方编码"
rs.Open Sql, Conn

i = 2
Do While Not rs.EOF
    Range("A" & i) = rs("承包方编码")
    Range("b" & i) = rs("承包方名称")
    Range("C" & i) = rs("宗地坐落")
    Range("D" & i) = rs("宗地编码")
    Range("E" & i) = rs("宗地名称")
    Range("F" & i) = rs("土地类型")
    Range("G" & i) = rs("实测面积")
    i = i + 1
   rs.MoveNext
Loop

Application.DisplayAlerts = False
irows = ActiveSheet.UsedRange.Rows.Count

For m = irows To 2 Step -1
    If Cells(m, 1) = Cells(m - 1, 1) Then
       Range(Cells(m - 1, 1), Cells(m, 1)).Merge
       Range(Cells(m - 1, 2), Cells(m, 2)).Merge
       Range(Cells(m - 1, 3), Cells(m, 3)).Merge
       Range(Cells(m - 1, 8), Cells(m, 8)).Merge
       Range(Cells(m - 1, 9), Cells(m, 9)).Merge
       Range(Cells(m - 1, 10), Cells(m, 10)).Merge
       Range(Cells(m - 1, 11), Cells(m, 11)).Merge
    End If
Next

End Sub


只有本站会员才能查看附件,请 登录

求和部份没空弄,自已看一下加上代码就可以了
#6
jackh2019-01-03 10:49
只有本站会员才能查看附件,请 登录
运行时有错误
#7
icecool2019-01-03 12:12
要引用ado组件
#8
icecool2019-01-03 12:14
我上传的要个文件要放一起运行
#9
icecool2019-01-03 12:16
我把表版本转成97版了,注意文件名及后缀
官塘驿镇白羊村一组村民小组湖北地信Excel文件.xls
#10
wds12019-01-03 14:12
只有本站会员才能查看附件,请 登录


附件代码供参考(没做优化),一般来说参照代码,肯定能做出你要的结果

1、根据原始表提取出目的表
2、目的表只对第一个人员做了格式处理
3、其实控制输出格式可以用循环及数组的,自己琢磨着做。

只有本站会员才能查看附件,请 登录


做了格式处理,你看看。

只有本站会员才能查看附件,请 登录



[此贴子已经被作者于2019-1-3 15:52编辑过]

#11
jackh2019-01-03 20:42
只有本站会员才能查看附件,请 登录
运行错误
#12
jackh2019-01-03 21:02
只有本站会员才能查看附件,请 登录
运行错误
#13
wds12019-01-03 21:24
程序都注释了,需要引用以下控件
【需要引用Microsoft Activex Data Objects 2.5 Library】
#14
jackh2019-01-03 21:25
回复 13楼 wds1
这个需要另外安装吗
#15
jackh2019-01-03 21:26
回复 13楼 wds1
具体怎么用呢?小白求原谅
#16
jackh2019-01-03 23:20
回复 13楼 wds1
我的开发环境是excel2010,这个有影响吗
#17
jackh2019-01-04 00:12
回复 16楼 jackh
win7 64位
#18
icecool2019-01-04 08:54
只有本站会员才能查看附件,请 登录

你再试试,打开官塘驿镇白羊村一组村民小组湖北地信Excel文件 - 副本.xlsm空白处双击即可。
excel版本高了驱动改了
#19
wds12019-01-04 11:33
不同版本的execl ado的版本不同,你在vb-工程-应用,可以找到你机器的相关ADO的版本

Microsoft Activex Data Objects 2.5 Library
Microsoft Activex Data Objects 2.6 Library
Microsoft Activex Data Objects 2.7 Library
Microsoft Activex Data Objects 2.8 Library
每一个对应各自版本的execl

但是对于查询语句,应用对应的查询语句,一般都可兼容。

不过不同版本execl的sql 语句不一致,以下是execl2003,execl2007的驱动,execl2010我没安装,没法验证

If Right(Execl_name, Len(Execl_name) - InStrRev(Execl_name, ".")) = "xls" Then
    cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;data source=" & Execl_name & ";extended properties= 'Excel 8.0;HDR=NO;IMEX=1';"
  ElseIf Right(Execl_name, Len(Execl_name) - InStrRev(Execl_name, ".")) = "xlsx" Then
    cn.Open "Provider=Microsoft.Ace.OLEDB.12.0;Persist Security Info=False;data source=" & Execl_name & ";extended properties= 'Excel 12.0;HDR=NO;IMEX=1';"
  End If


[此贴子已经被作者于2019-1-4 12:18编辑过]

1