Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2391|回复: 7

[已解决]vba 从一个工作簿根据条件把数据放入对应的工作簿

[复制链接]
发表于 2014-2-23 16:50 | 显示全部楼层 |阅读模式
本帖最后由 qh8600 于 2014-2-24 13:08 编辑

公司.rar (28.03 KB, 下载次数: 11)
发表于 2014-2-23 17:32 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2014-2-23 18:07 | 显示全部楼层
hwc2ycy 发表于 2014-2-23 17:32
应该是追加数据吧。

是啊,有好多工作簿,但是格式一样的
回复

使用道具 举报

发表于 2014-2-23 20:25 | 显示全部楼层
你刷新一次是不是把现在表内的数据全部复制到所有对应的工作簿的相关工作表?
回复

使用道具 举报

 楼主| 发表于 2014-2-23 20:43 | 显示全部楼层
hwc2ycy 发表于 2014-2-23 20:25
你刷新一次是不是把现在表内的数据全部复制到所有对应的工作簿的相关工作表?

是啊
回复

使用道具 举报

 楼主| 发表于 2014-2-23 20:44 | 显示全部楼层
hwc2ycy 发表于 2014-2-23 20:25
你刷新一次是不是把现在表内的数据全部复制到所有对应的工作簿的相关工作表?

不过要对应的,什么单位复制到什么单位
回复

使用道具 举报

发表于 2014-2-24 12:52 | 显示全部楼层    本楼为最佳答案   
本帖最后由 hwc2ycy 于 2014-2-24 12:57 编辑
  1. Sub Main()
  2.     Dim clg As Collection
  3.     Set clg = New Collection
  4.     Call listFiles(ThisWorkbook.Path, clg)
  5.     If clg.Count = 0 Then
  6.         MsgBox "当前文件夹下无数据文件可写入", vbCritical + vbOKOnly
  7.         Exit Sub
  8.     End If
  9.     Call ADOWrite2(clg)
  10.     If MsgBox("清除汇总工作表中现有数据?", vbYesNo) = vbYes Then
  11.     '数据更新完成后,是否清除现有数据
  12.         ActiveSheet.UsedRange.Offset(2).ClearContents
  13.     End If
  14. End Sub

  15. Sub listFiles(strPath$, clg As Collection)
  16. '---------------------------------------------------------------------------------------
  17. ' Procedure : listFiles
  18. ' Author    : hwc2ycy
  19. ' Date      : 2014/2/24
  20. ' Purpose   : 生成文件列表,存入集合中
  21. '---------------------------------------------------------------------------------------
  22.     Dim str$
  23.     Dim strFile As String
  24.     If Not Right(strPath, 1) = "" Then strPath = strPath & Application.PathSeparator
  25.     strFile = Dir(strPath & "*.xls")
  26.     Do While Len(strFile)
  27.         If strFile <> ThisWorkbook.Name And strFile Like "*.xls" Then
  28.             str = Left(strFile, InStrRev(strFile, ".") - 1)
  29.             clg.Add str, str
  30.         End If
  31.         strFile = Dir
  32.     Loop
  33. End Sub

  34. Sub ADOWrite2(clg As Collection)
  35. '---------------------------------------------------------------------------------------
  36. ' Procedure : ADOWrite2
  37. ' Author    : hwc2ycy
  38. ' Date      : 2014/2/24
  39. ' Purpose   : 通过ADO组件执行SQL查询实现一表分类输出至多表
  40. '---------------------------------------------------------------------------------------
  41.     Const adUseClient = 3
  42.     Const adModeReadWrite = 3
  43.     Const adModeRead = 1
  44.    
  45.     Dim AdoConn As Object
  46.     Dim strConn$, strSQL$, strFullNameS$
  47.     Dim strFullName$, item
  48.    
  49.     On Error GoTo ErrorHandler

  50.     Set AdoConn = CreateObject("ADODB.Connection")
  51.     strConn = "Provider= Microsoft.Jet.OLEDB.4.0;" & _
  52.               "Data Source='" & ThisWorkbook.FullName & "';Extended Properties='Excel 8.0;HDR=YES;imex=1';"
  53.    
  54.     With AdoConn
  55.         .CursorLocation = adUseClient
  56.         .Mode = adModeRead
  57.         .ConnectionString = strConn
  58.         .Open
  59.     End With

  60.     For Each item In clg
  61.         strFullName = "[Excel 8.0;hdr=yes;imex=2;Database=" & ThisWorkbook.Path & Application.PathSeparator & item & ".xls]"
  62.         With AdoConn
  63.             strSQL = "insert into " & strFullName & ".[报表$] select 数据1,数据2,数据3,数据4,数据5,数据6 from [汇总$A2:G] where 单位='" & item & "'"
  64.             .Execute strSQL
  65.             strSQL = "insert into " & strFullName & ".[明细$]  select 数据7,数据8,数据9 from [汇总$H2:K]  where 单位='" & item & "'"
  66.             .Execute strSQL
  67.         End With
  68.     Next
  69.     AdoConn.Close
  70.     Application.ScreenUpdating = True
  71.     MsgBox "数据导出完成"
  72.     Exit Sub

  73. ErrorHandler:
  74.     MsgBox Err.Number & vbCrLf & _
  75.            Err.Description
  76.     Application.ScreenUpdating = True
  77.     On Error Resume Next
  78.     AdoConn.Close
  79.     Set AdoConn = Nothing
  80.    
  81. End Sub
复制代码
回复

使用道具 举报

发表于 2014-2-24 13:01 | 显示全部楼层
汇总.rar (19.6 KB, 下载次数: 16)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-20 23:20 , Processed in 0.549207 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表