有一千张工作簿:
名字分别为:工作簿1,工作簿2,工作簿3...
工作簿1内容为:中大  100
华工   98
华师   88
暨大   92
广外   89
华农   87
广外   80
广药   77
广大   69工作簿2内容为:
中大  101
华工   95
华师   89
暨大   90
广外   85
华农   89
广外   84
广药   79
广大   64后面的工作簿的数据结构都是一样的,只是第二列数据不同。
然后要把第二列的数据相加;结果输出效果如(工作簿1)中大  100
华工   98
华师   88
暨大   92
广外   89
华农   87
广外   80
广药   77
广大   69总数   780代码如下:Sub pp()
Dim i As Integer
Dim m As String
Cells(10, 1) = "总数"
For i = 1 To 9
Cells(10, 2) = Cells(10, 2) + Cells(i, 2)
Next
End Sub
这个是处理一个工作簿的。
我想编写一个外部过程,可以点击一下按钮就一下子将一千个工作簿同时进行上述的相加操作。请高手们指导下(代码支持)

解决方案 »

  1.   

    请把你的一千个文件复制到一个文件夹,然后新建一个文件写入本代码,运行它即可。(只操作每一个文件中的活动工作表,其他不管)
    Sub yy()
    Dim p$, f$, sh As Worksheet
    p = ThisWorkbook.Path & "\"
    f = Dir(p & "*.xls")
    On Error Resume Next
    Application.ScreenUpdating = False
    Do While f <> ""
        If f <> ThisWorkbook.Name Then
            Workbooks.Open p & f
            Set sh = ActiveWorkbook.ActiveSheet
            sh.Cells(10, 1) = "总数"
            sh.Cells(10, 2) = Application.Sum(sh.[b1:b9])
            Workbooks(f).Close True
        End If
        f = Dir
    Loop
    Set sh = Nothing
    Application.ScreenUpdating = True
    End Sub
      

  2.   

    反复打开关闭工作薄会花掉大量时间,建议使用ADO+SQL解决,参考:[求助]求多工作簿汇总(用ado+sql)的例子或网址
      

  3.   

    hshj99 谢谢你,你的程序我试了一下,结果打开了一千个窗口,满屏幕都是窗口,能不能做个循环,在处理完一个
    工作簿后马上把该工作簿关闭?
      

  4.   

    不好意思,搞错了,hshj99你的程序运行得很成功,谢谢你!