Excel精英培训网

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

[已解决]不打开EXCEL,批量读取EXCEL指定内容。

[复制链接]
发表于 2016-5-30 13:49 | 显示全部楼层 |阅读模式
本帖最后由 010203400 于 2016-5-30 16:03 编辑

请教一下,如截图和附件,有几个档案,现在要在Temp0中写宏,

当执行时,可以在不打开另外8个档案的情况下,读取另外8个档案中的ABCD栏位的所有内容(不包含第1行),和这8个档案的文件名,

将ABCD栏位的所有内容(不包含第1行)全部放在Temp0中的ABCD栏,并在E栏填入和对应档案的档案名。

拜托各位了。
最佳答案
2016-5-30 15:14
  1. Sub Macro1()
  2. Set sht = ThisWorkbook.Sheets(1)
  3. mypath = ThisWorkbook.Path & ""
  4. wj = Dir(mypath & "*.xls")
  5. Application.ScreenUpdating = False
  6. [a2:e60000].Clear
  7. Do While wj <> ""
  8.     If wj <> ThisWorkbook.Name Then
  9.         n = sht.Range("a65536").End(xlUp).Row + 1
  10.         zf = Split(wj, ".xls")(0)
  11.         With GetObject(mypath & wj)
  12.             Set rng = .Sheets(1).Range("a1").CurrentRegion.Offset(1, 0)
  13.             rng.Copy sht.Cells(n, 1)
  14.             sht.Cells(n, 5).Resize(rng.Rows.Count - 1) = zf
  15.             .Close 0
  16.         End With
  17.     End If
  18.     wj = Dir
  19. Loop
  20. Application.ScreenUpdating = True
  21. End Sub
复制代码
Temp2.JPG
Temp.JPG

Temp.zip

80.34 KB, 下载次数: 5

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2016-5-30 15:14 | 显示全部楼层    本楼为最佳答案   
  1. Sub Macro1()
  2. Set sht = ThisWorkbook.Sheets(1)
  3. mypath = ThisWorkbook.Path & ""
  4. wj = Dir(mypath & "*.xls")
  5. Application.ScreenUpdating = False
  6. [a2:e60000].Clear
  7. Do While wj <> ""
  8.     If wj <> ThisWorkbook.Name Then
  9.         n = sht.Range("a65536").End(xlUp).Row + 1
  10.         zf = Split(wj, ".xls")(0)
  11.         With GetObject(mypath & wj)
  12.             Set rng = .Sheets(1).Range("a1").CurrentRegion.Offset(1, 0)
  13.             rng.Copy sht.Cells(n, 1)
  14.             sht.Cells(n, 5).Resize(rng.Rows.Count - 1) = zf
  15.             .Close 0
  16.         End With
  17.     End If
  18.     wj = Dir
  19. Loop
  20. Application.ScreenUpdating = True
  21. End Sub
复制代码

Temp.zip

56.39 KB, 下载次数: 8

回复

使用道具 举报

 楼主| 发表于 2016-5-30 16:18 | 显示全部楼层
dsmch 发表于 2016-5-30 15:14

你好,請教一下,
Set sht = ThisWorkbook.Sheets(1)
這里的Sheets(1)是那8個檔案中的Sheets(1),還是要彙總的檔案中的Sheets(1)啊?

点评

是后者  发表于 2016-5-30 16:53
回复

使用道具 举报

 楼主| 发表于 2016-5-30 17:35 | 显示全部楼层
010203400 发表于 2016-5-30 16:18
你好,請教一下,
Set sht = ThisWorkbook.Sheets(1)
這里的Sheets(1)是那8個檔案中的Sheets(1),還是要 ...

你好,再問一下,哪個地方是改變要copy檔案中的內容範圍呢,我現在想改為copy 6欄。

点评

第12行:Set rng = .Sheets(1).Range("a1").CurrentRegion.Offset(1, 0)  发表于 2016-5-31 05:25
第12行:Set rng = .Sheets(1).Range("a1").CurrentRegion.Offset(1, 0)  发表于 2016-5-31 05:24
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 14:44 , Processed in 0.386792 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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