Excel精英培训网

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

[已解决]提取当前文件夹下每个表格的G8:G25单元格

[复制链接]
发表于 2017-7-11 11:35 | 显示全部楼层 |阅读模式
自己研究别人的代码,改了一天都不得行。希望大神给帮忙改下(或者大神也可以重新写一个)。压缩包已经有了一个VBA,没有错误,但是也不能提取我想要的。

目的是:提取当前文件夹下的工作薄(包含每个工作表)的G7-G25单元格的数字,且为空的单元格,不提取。十分感谢了
最佳答案
2017-7-11 12:48
本帖最后由 chart888 于 2017-7-11 12:50 编辑
  1. Option Explicit
  2. Sub test()
  3. Dim mypath, myfile, wb, r, j, i
  4. Range("A2:A" & Rows.Count).Clear
  5. Application.ScreenUpdating = False
  6. mypath = ThisWorkbook.Path & ""         '找到当前工作簿的路径
  7. myfile = Dir(mypath & "*.xls*")          '遍历当前路径下的工作簿
  8. Do While myfile <> ""                    '当找到的文件不为空时
  9.     If myfile <> ThisWorkbook.Name Then   '当找到的文件不是本工作簿时
  10.         Set wb = GetObject(mypath & myfile) '利用GetObject取得数据
  11.         With wb.Sheets(1)                   '对wb的sheet1进行操作
  12.             r = ThisWorkbook.ActiveSheet.Range("A65536").End(xlUp).Row + 1
  13.             .Range("G8:G25").Copy ThisWorkbook.ActiveSheet.Cells(r, 1)
  14.         End With
  15.         wb.Close                   '别忘了关掉,要不然越开越多电脑就瘫痪了
  16.     End If
  17.     myfile = Dir                  '去找下一个工作簿
  18. Loop
  19. r = ThisWorkbook.ActiveSheet.Range("A65536").End(xlUp).Row
  20. For j = r To 1 Step -1
  21.     If Cells(j, 1) = "" Then
  22.         Rows(j).Delete
  23.     End If
  24. Next
  25. Application.ScreenUpdating = True
  26. End Sub
复制代码

提取每个表的G8-G25单元格数字且空单元格不提取.rar

52.38 KB, 下载次数: 10

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2017-7-11 11:58 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2017-7-11 12:38 | 显示全部楼层
七彩屋 发表于 2017-7-11 11:58
要的结果模拟一下

结果已经模拟了,还改变了下 。     麻烦大神了

提取每个表的G8-G25单元格数字且空单元格不提取-模拟结果.rar

55.97 KB, 下载次数: 1

回复

使用道具 举报

发表于 2017-7-11 12:48 | 显示全部楼层    本楼为最佳答案   
本帖最后由 chart888 于 2017-7-11 12:50 编辑
  1. Option Explicit
  2. Sub test()
  3. Dim mypath, myfile, wb, r, j, i
  4. Range("A2:A" & Rows.Count).Clear
  5. Application.ScreenUpdating = False
  6. mypath = ThisWorkbook.Path & ""         '找到当前工作簿的路径
  7. myfile = Dir(mypath & "*.xls*")          '遍历当前路径下的工作簿
  8. Do While myfile <> ""                    '当找到的文件不为空时
  9.     If myfile <> ThisWorkbook.Name Then   '当找到的文件不是本工作簿时
  10.         Set wb = GetObject(mypath & myfile) '利用GetObject取得数据
  11.         With wb.Sheets(1)                   '对wb的sheet1进行操作
  12.             r = ThisWorkbook.ActiveSheet.Range("A65536").End(xlUp).Row + 1
  13.             .Range("G8:G25").Copy ThisWorkbook.ActiveSheet.Cells(r, 1)
  14.         End With
  15.         wb.Close                   '别忘了关掉,要不然越开越多电脑就瘫痪了
  16.     End If
  17.     myfile = Dir                  '去找下一个工作簿
  18. Loop
  19. r = ThisWorkbook.ActiveSheet.Range("A65536").End(xlUp).Row
  20. For j = r To 1 Step -1
  21.     If Cells(j, 1) = "" Then
  22.         Rows(j).Delete
  23.     End If
  24. Next
  25. Application.ScreenUpdating = True
  26. End Sub
复制代码

提取每个表的G8-G25单元格数字且空单元格不提取.zip

58.52 KB, 下载次数: 15

评分

参与人数 1 +30 金币 +30 收起 理由
望帝春心 + 30 + 30 赞一个

查看全部评分

回复

使用道具 举报

发表于 2017-7-11 14:46 | 显示全部楼层
换个不打开工作表的方法。。。。。
QQ截图20170711144412.png

提取每个表的G8-G25单元格数字且空单元格不提取.rar

54.8 KB, 下载次数: 17

回复

使用道具 举报

 楼主| 发表于 2017-7-11 16:42 | 显示全部楼层
grf1973 发表于 2017-7-11 14:46
换个不打开工作表的方法。。。。。

不行啊。大神
OE)QES_LXSTW2BFSEFVULH2.png
回复

使用道具 举报

发表于 2017-7-11 16:58 | 显示全部楼层
可能是版本不对。。。。。。
把那句最长的前面改为  cnn.Open "Provider=Microsoft.jet.OLEDB.4.0;Extended Properties='Excel 8.0;....................再试试。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-25 05:58 , Processed in 0.584184 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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