Excel精英培训网

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

[已解决]如何给宏代码加入循环语句

[复制链接]
发表于 2013-10-26 20:38 | 显示全部楼层 |阅读模式
下述代码将z1.txt数据导入excel的a1:u300
欲将z2.txt数据导入excel的a301:u600,需要再写一个类似的宏代码
如果有z1...z300.txt依次导入,就要写300个类似的宏代码
能否加个循环语句,解决上述问题?

Sub 导入数据()
    Sheets("数据").Select
    Application.ScreenUpdating = False
    Range("a1:u300").ClearContents
    With Workbooks.Open("D:\数据\z1.txt")
        .ActiveSheet.Range("A1").CurrentRegion.Copy ThisWorkbook.ActiveSheet.Range("a1")
        .Close False
    End With
    Application.ScreenUpdating = True
End Sub
最佳答案
2013-10-26 23:21
本帖最后由 yyyydddd8888 于 2013-10-26 23:46 编辑
lijian8003 发表于 2013-10-26 23:17
With Application.FileSearch
就是这一句

把代码改成下面的试试:
附件如下,请测试:
(, 下载次数: 3)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-10-26 21:33 | 显示全部楼层
Sub 导入数据()
Dim i As Integer
    Sheets("数据").Select
    Application.ScreenUpdating = False
    Range("a1:u300").ClearContents
    For i = 1 To 300
    With Workbooks.Open("D:\数据\z" & i & ".txt")
        .ActiveSheet.Range("A1").CurrentRegion.Copy ThisWorkbook.ActiveSheet.Range("a1")
        .Close False
    End With
    Next i
    Application.ScreenUpdating = True
End Sub
回复

使用道具 举报

发表于 2013-10-26 21:42 | 显示全部楼层
试试这个
Sub 导入数据()
    Sheets("数据").Select
    Application.ScreenUpdating = False
    Range(Cells(1, 1), Cells(300, 90000)).ClearContents
   
    Dim k As Integer
    k = 1
   
    For i = 1 To 300
    With Workbooks.Open("D:\数据\z" & i & ".txt")
        .ActiveSheet.Range("A1").CurrentRegion.Copy ThisWorkbook.ActiveSheet.Cells(1, k)
        k = k + 300
        .Close False
    End With
    Next
    Application.ScreenUpdating = True
End Sub
回复

使用道具 举报

发表于 2013-10-26 22:31 | 显示全部楼层
本帖最后由 yyyydddd8888 于 2013-10-26 22:35 编辑

请测试下面的代码:
附件如下:
数据.zip (15.95 KB, 下载次数: 5)
回复

使用道具 举报

 楼主| 发表于 2013-10-26 22:41 | 显示全部楼层
我心飞翔410 发表于 2013-10-26 21:33
Sub 导入数据()
Dim i As Integer
    Sheets("数据").Select

.ActiveSheet.Range("A1").CurrentRegion.Copy ThisWorkbook.ActiveSheet.Range("a1")
这句不需要改变吗?
回复

使用道具 举报

 楼主| 发表于 2013-10-26 22:54 | 显示全部楼层
yyyydddd8888 发表于 2013-10-26 22:31
请测试下面的代码:
附件如下:

With Application.FileSearch
   对象不支持该动作
回复

使用道具 举报

发表于 2013-10-26 22:56 | 显示全部楼层
lijian8003 发表于 2013-10-26 22:54
With Application.FileSearch
   对象不支持该动作

不会呀,我在我的电脑上测试过的啊!能取出数据的啊!
回复

使用道具 举报

 楼主| 发表于 2013-10-26 23:06 | 显示全部楼层
yyyydddd8888 发表于 2013-10-26 22:56
不会呀,我在我的电脑上测试过的啊!能取出数据的啊!

运行时错误'445'对象不支持该操作
我是WIN7 64位,excel64位,与之有关吗?
回复

使用道具 举报

发表于 2013-10-26 23:11 | 显示全部楼层
lijian8003 发表于 2013-10-26 23:06
运行时错误'445'对象不支持该操作
我是WIN7 64位,excel64位,与之有关吗?

我也不清楚,我是xp 的系统,excel2003
你在出错的提示框中点一下调试按钮,看看出错的是哪一句代码,再告诉我,我再看看。
回复

使用道具 举报

 楼主| 发表于 2013-10-26 23:16 | 显示全部楼层
yyyydddd8888 发表于 2013-10-26 22:56
不会呀,我在我的电脑上测试过的啊!能取出数据的啊!

VBA Excel 2007 Application.FileSearch 替代方法
http://www.cnblogs.com/Nina-piaoye/archive/2013/04/09/3010310.html
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-13 15:13 , Processed in 0.445095 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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