如何用Excel VBA实现读取各个Excel文件指定sheet的内容到指定的一个sheet内。

pilotyyc 2010-02-01 02:39:20
题目说的比较笼统,下面是具体的内容
1)想用一个VBA读取一个文件夹下的各个Excel的一个指定的sheet页。
2)读取的这个sheet页的内容有N列M行,要求把这N列M行读写到指定的一个sheet页内。
3)读取完上个Excel文件的sheet页的内容后,自动读取下一个Excel文件,接着往下记录。

...全文
2047 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiannye 2011-02-24
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 line_us 的回复:]
你这个想法可以用宏记录完成
[/Quote]

就是用宏么。。 奶奶个熊 还循环复制黏贴。。 SB
line_us 2010-02-13
  • 打赏
  • 举报
回复
你这个想法可以用宏记录完成
cphj 2010-02-12
  • 打赏
  • 举报
回复
“直接运行历遍代码读取网络服务器上的文件夹,大概需要一秒多的时间可以显示出来这个文件夹内一共的.xls数,时间大多在网络通信上。但是和写入部分连接整合之后,用数组5分钟之内能搞定的事情,这个好像需要更长的时间”

既然一秒多的时间可以显示出来这个文件夹内一共的.xls数,那么文件数量也不多啊?怎么还需要5分钟,甚至更多时间?怀疑瓶颈在其他地方
pilotyyc 2010-02-09
  • 打赏
  • 举报
回复
谢谢提议,我的直接感觉就是效率不是很高。
文件少的话,还能对付的过去,如果多一些,不知道是当掉了还是效率低!
laoyebin 2010-02-05
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 pilotyyc 的回复:]
在网上找到了一段历遍文件夹的VBA代码,试验了一下。可以执行。和之前我做的写入部分连接起来就可以达到我之前所说的目的了。
(一点点小补充,感觉好像效率没有直接写数组的方法快,直接运行历遍代码读取网络服务器上的文件夹,大概需要一秒多的时间可以显示出来这个文件夹内一共的.xls数,时间大多在网络通信上。但是和写入部分连接整合之后,用数组5分钟之内能搞定的事情,这个好像需要更长的时间,所以依然在使用着老方法)
VB codeSub test()Dim sFolderAsStringDim wbAs WorkbookDim iAsLongWith Application.FileSearch
.NewSearch
.LookIn="folderpath"' .SearchSubFolders=True
.filename="*.xls"
.FileType= msoFileTypeExcelWorkbooksIf .Execute()>0Then'Else'Error MessageEndIfEndWithEnd Sub
[/Quote]

用FileSearch你会后悔的
再找找FileSystemObject的例子吧
pilotyyc 2010-02-05
  • 打赏
  • 举报
回复
在网上找到了一段历遍文件夹的VBA代码,试验了一下。可以执行。和之前我做的写入部分连接起来就可以达到我之前所说的目的了。
(一点点小补充,感觉好像效率没有直接写数组的方法快,直接运行历遍代码读取网络服务器上的文件夹,大概需要一秒多的时间可以显示出来这个文件夹内一共的.xls数,时间大多在网络通信上。但是和写入部分连接整合之后,用数组5分钟之内能搞定的事情,这个好像需要更长的时间,所以依然在使用着老方法)

Sub test()
Dim sFolder As String
Dim wb As Workbook
Dim i As Long
With Application.FileSearch
.NewSearch
.LookIn = "folderpath" '
.SearchSubFolders = True
.filename = "*.xls"
.FileType = msoFileTypeExcelWorkbooks
If .Execute() > 0 Then
'
Else
'Error Message
End If
End With
End Sub
pilotyyc 2010-02-02
  • 打赏
  • 举报
回复
由于功能实现要求的比较急,直接用了一个比较偷懒的方法
没有做文件夹内各个文件名称取得的部分,直接用一个数组把所有要取得的文件的路径直接写进去了
然后循环取值设定各个小项目,代码在是在网上抄的,我就不贴上来了。

继续等高手指教。

BTW:如果没有回帖的话,一个星期后结贴。
pilotyyc 2010-02-01
  • 打赏
  • 举报
回复
不知道其他大侠有没有更好的办法。
laoyebin 2010-02-01
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 pilotyyc 的回复:]
楼上的方法可行,但是如果原文件有变动的话,你统计的表的内容是不会跟着变化的。

目前采用的方法是每个表格用“=if('查看是否为空','null','值设定')”
[/Quote]

变了就再做一遍啊,不可能时刻都要汇总吧,一天一次,工作量也不大
pilotyyc 2010-02-01
  • 打赏
  • 举报
回复
楼上的方法可行,但是如果原文件有变动的话,你统计的表的内容是不会跟着变化的。

目前采用的方法是每个表格用“=if('查看是否为空','null','值设定')”
laoyebin 2010-02-01
  • 打赏
  • 举报
回复
循环
打开--复制--粘贴--关闭

6,216

社区成员

发帖
与我相关
我的任务
社区描述
Microsoft Office应用
社区管理员
  • Microsoft Office应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧