标题:求助!!!如何用VB把2个SHEET中的2列整合到一个新的EXCEL文档中。。
只看楼主
simon1223
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2009-11-30
结帖率:0
已结贴  问题点数:20 回复次数:4 
求助!!!如何用VB把2个SHEET中的2列整合到一个新的EXCEL文档中。。
一个EXCEL文件中的 有 2个SHEET  例如:
   SHEET1                              SHEET2
学生  成绩                        学生     成绩
张三    20                        王五      66
李四    30                        马六      88   




最后结果 是     一个新的EXCEL文件

                  SHEET3
学生   成绩
张三   20
李四   30
王五   66
马六   88   

-------------
这个要用宏来设置 我现在只能通过SHEET名来获取 但是 获取到的第2个SHEET的内容直接覆盖掉了第1个的  我的结果只能显示为最新的:
                        学生     成绩
                        王五      66
                        马六      88  
           
搜索更多相关主题的帖子: 文档中 EXCEL SHEET 
2009-11-30 18:26
bczgvip
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:66
帖 子:1310
专家分:5312
注 册:2009-2-26
得分:10 
直接复制不得了?
2009-12-01 01:18
simon1223
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2009-11-30
得分:0 
我这是打个比方。。。。。我这有很多个表 每个表里有很多个SHEET。。。。。要根据需求把部分SHEET里面的 部分数据整合到一个新的EXCEL文件中。。。。只能用宏设置啊!!!!继续求助!!!!!
2009-12-01 08:12
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4912
专家分:29900
注 册:2008-10-15
得分:10 
进入 EXCEL 里的VBA编辑器.插入一个窗口.
增加三个按钮,一个listbox.
CommandButton1 为全选
CommandButton2 为合并
CommandButton3 为退出



程序代码:

Private Sub CommandButton1_Click()
Dim i As Long

'全选
For i = 0 To ListBox1.ListCount - 1
    ListBox1.Selected(i) = True
Next i

End Sub

Private Sub CommandButton2_Click()

Dim obj As Object             '合并后的那个表
Dim obj2 As Workbook          '合并后的新工作簿
Dim obj3 As Workbook          '运行前的活动工作簿

Set obj3 = Application.ActiveWorkbook            '保存当前活动工作簿
Set obj2 = Application.Workbooks.Add             '增加一个工作簿
Set obj = obj2.Sheets(1)                         '指定第一个表为合并后的表

'此命令是在当前活动工作簿中增加一个表
'Set obj = obj3.Sheets.Add

'如果是合并后到当前工作簿,则使用增加表命令,
'如果是新的工作簿,则使用增加工作簿命令,再指定工作表


Dim i As Long, j As Long
Dim o As Long, k As Long

'定义表头是第1行
o = 1
'复制表头, 下面的2表示有多少列
For i = 1 To 2
    obj.Cells(o, i) = obj3.Sheets(ListBox1.List(0)).Cells(o, i)
Next i

'复制数据
o = o + 1
For j = 0 To ListBox1.ListCount - 1
    If ListBox1.Selected(j) Then
        k = 2               '数据区起始是第行
        '准备读的数据不为空是继续
        Do While obj3.Sheets(ListBox1.List(j)).Cells(k, 1) <> ""
            For i = 1 To 2          '2表示复制2列
                obj.Cells(o, i) = obj3.Sheets(ListBox1.List(j)).Cells(k, i)
            Next i
        '向下走一行
        o = o + 1
        k = k + 1
        Loop
    End If
Next j

MsgBox "合并完成"

End Sub

Private Sub CommandButton3_Click()
    Unload Me
End Sub

Private Sub UserForm_Initialize()

Dim i As Long

ListBox1.MultiSelect = fmMultiSelectExtended
'把当前活动的工作薄的工作表列出来
For i = 1 To Application.ActiveWorkbook.Sheets.Count
    ListBox1.AddItem Application.ActiveWorkbook.Sheets(i).Name
Next i

End Sub



[ 本帖最后由 风吹过b 于 2009-12-1 14:19 编辑 ]

授人于鱼,不如授人于渔
早已停用QQ了
2009-12-01 14:11
yuk_yu
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:334
专家分:134
注 册:2009-3-16
得分:0 
回复 4楼 风吹过b
高手就是高手!
2010-01-04 21:18



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-293505-1-1.html




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

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