Excel精英培训网

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

[已解决]VBA批量复制文本文件

[复制链接]
发表于 2016-3-16 10:59 | 显示全部楼层 |阅读模式
本帖最后由 2198596388 于 2016-3-18 11:14 编辑

急求大侠帮忙:把F盘中所有文本文件一次性复制到D盘,并覆盖D盘中同名的文本文件。怎样用VBA快速完成?急求!先谢了!!!
最佳答案
2016-3-17 15:58
2198596388 发表于 2016-3-17 13:23
比如(前3个),把F:\盘下文本文件(名称是)1班,2班,3班,分别复制到D:\统计\1班\ ,D:\统计\2班\,D: ...

Sub test()
    Dim p1, p2, p3, f
    p1 = "f:\"          '源路径
    p2 = "d:\统计\"      '目的路径
    f = Dir(p1 & "*.txt")

    On Error Resume Next
    Do While f <> ""
        p3 = p2 & Replace(f, ".txt", "") & "\"    '新建文件夹的路径
        MkDir p3
        FileCopy p1 & f, p3 & f
        f = Dir()
    Loop
End Sub

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2016-3-16 12:04 来自手机 | 显示全部楼层
F盘中所有文本文件?
实际上,可能缩小范围吗?比如只把f:\abc
回复

使用道具 举报

 楼主| 发表于 2016-3-16 13:42 | 显示全部楼层
爱疯 发表于 2016-3-16 12:04
F盘中所有文本文件?
实际上,可能缩小范围吗?比如只把f:\abc

F盘中有时1个文本文件,有时有10多个文本文件的
回复

使用道具 举报

 楼主| 发表于 2016-3-16 15:11 | 显示全部楼层
本帖最后由 2198596388 于 2016-3-16 17:02 编辑

爱疯老师您好!也许是我表达得不够清楚,我的意思就是:把F盘中的多个文本文件快速复制到D盘中“统计”文件夹里。用VBA怎么完成这个效果呢?辛苦老师帮写个代码学习学习,先谢谢老师了!
回复

使用道具 举报

发表于 2016-3-16 16:49 | 显示全部楼层
Dim fso As Object    '模块级变量
Dim DestinationPath As String

'主程序
Sub main()
    Set fso = CreateObject("scripting.filesystemobject")
    DestinationPath = "D:\123"          '指定目标路径
    Call Recursion("D:\BaiduMusic")     '指定源路径
    Shell "explorer " & DestinationPath & "\", vbNormalFocus
End Sub

'递归程序
Sub Recursion(myPath As String)
    Dim myFolder As Object, mySubFolder As Object, myFile As Object
    Set myFolder = fso.getfolder(myPath)

    '遍历文件夹
    For Each mySubFolder In myFolder.SubFolders
        Recursion mySubFolder.Path
    Next

    '遍历文件
    For Each myFile In myFolder.Files
        '指定操作
        If fso.GetExtensionName(myPath & "\" & myFile) = "jpg" Then Call demo(myPath, myFile.Name)
    Next
End Sub

'指定操作
Sub demo(myPath As String, myFile As String)
    Dim SourceFile, DestinationFile, DestinationPath
    SourceFile = myPath & "\" & myFile                  '指定源文件名
    DestinationFile = DestinationPath & "\" & myFile    '指定目的文件名
    FileCopy SourceFile, DestinationFile                '将源文件的内容复制到目的文件中
End Sub

1.rar (9.73 KB, 下载次数: 15)
回复

使用道具 举报

 楼主| 发表于 2016-3-16 17:24 | 显示全部楼层
爱疯 发表于 2016-3-16 16:49
Dim fso As Object    '模块级变量
Dim DestinationPath As String

老师能简单点代码吗?初学vba看起来有点吃力,难理解呀
回复

使用道具 举报

发表于 2016-3-16 17:34 来自手机 | 显示全部楼层
如果只是对某个路径下,不含其子文件夹,那么可简化。
回复

使用道具 举报

 楼主| 发表于 2016-3-16 17:58 | 显示全部楼层
爱疯 发表于 2016-3-16 17:34
如果只是对某个路径下,不含其子文件夹,那么可简化。

老师,就是:把F盘中的多个文本文件快速复制到D盘中“统计”文件夹里。没有子文件夹的,简单点咋弄代码呢?
回复

使用道具 举报

发表于 2016-3-16 20:16 | 显示全部楼层
Sub test()
    Dim p1, p2, f
    p1 = "f:\"
    p2 = "d:\统计"

    f = Dir(p1 & "*.txt")
    Do While f <> ""
        Debug.Print f

        FileCopy p1 & f, p2 & f
        f = Dir
    Loop
End Sub

回复

使用道具 举报

 楼主| 发表于 2016-3-17 12:10 | 显示全部楼层
本帖最后由 2198596388 于 2016-3-17 12:11 编辑
爱疯 发表于 2016-3-16 20:16
Sub test()
    Dim p1, p2, f
    p1 = "f:\"

哇塞!这代码好看多了,简单易学!!!老师辛苦了!再请教一下老师,如果是:“ 把F盘下的这些文本文件分别复制到D盘下同名字的文件夹里 ” 呢?该怎么修改一下代码?
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 18:32 , Processed in 0.176764 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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