VBA 复制文件 并修改文件

本文详细介绍了如何使用VBA的FileSystemObject在Excel中实现文件和文件夹的复制,包括基本的复制方法、按特定规则处理文件以及处理文件夹结构的示例。
摘要由CSDN通过智能技术生成

使用VBA复制文件的5个实战示例

FileSystemObject.CopyFile "c:\mydocuments\letters\sample.doc", "c:\tempfolder\sample_new.doc"

Sub 按钮1_Click()

Set wk = ThisWorkbook.Worksheets("Sheet1")

'Workbooks("").Worksheets


Path = wk.Range("C12")

afterPath = wk.Range("C14")

' 复制文件夹
Call CopyFiles(Path, afterPath)

afterPath = wk.Range("C15")

Call CopyFiles2(Path, afterPath)


 Dim wkbk As Workbook  '定义一个工作薄

 Set fso = CreateObject("Scripting.FileSystemObject")
 
 Set targetFolder = fso.GetFolder(afterPath)
    
    ' 遍历源文件夹中的所有文件
    For Each file In targetFolder.Files
    
    Debug.Print file.Path
    
    If file.Path Like "*テーブル*" Then
    
     Set wkbk = Workbooks.Open(file.Path) '先打开要复制的文件
    
     wkbk.Activate '激活打开工作簿
     
     wkbk.Worksheets("辞書").Activate
     
     wkbk.Worksheets("辞書").Range("M14").Value = "ddd"
     
     wkbk.Save
    
     
     wkbk.Close False '关闭工作薄
     
     End If

    Next file
 
 
End Sub

Sub CopyFiles(ByVal Path As String, afterPath)
    'Path:原文件夹路径;afterPath:目标文件夹路径
    Dim Spath As String
    '设置文件对象
    Set fs = CreateObject("Scripting.FileSystemObject")
    '拿到文件夹名
    Spath = Dir(Path, vbDirectory)
    '判断文件夹
    Do While Len(Spath)
    
        Debug.Print Spath
        '判断文件夹不为当前文件夹和其父文件夹
        If Spath <> "." And Spath <> ".." Then
            '复制文件夹下的所有文件
            fs.CopyFolder Path, afterPath
            '下一个文件夹
            Spath = Dir()
        End If
    Loop
End Sub

Sub CopyFiles2(ByVal Path As String, afterPath)
    Dim fso As Object
    Dim sourceFolder As Object
    Dim targetFolder As Object
    Dim file As Object
    
    ' 创建FileSystemObject对象
    Set fso = CreateObject("Scripting.FileSystemObject")
    
     If Not fso.FolderExists(Path) Then
        MsgBox "目标文件不存在"
           Exit Sub
        
    End If
    
     If Not fso.FolderExists(afterPath) Then
        fso.CreateFolder afterPath
        
        Else
        msgBoxAnswer = MsgBox(Prompt:="目标位置文件已经存在." & vbNewLine & _
        "你想覆盖掉吗?", Buttons:=vbYesNo, Title:="复制文件")
 
       If msgBoxAnswer = vbNo Then
          Exit Sub
        End If
    End If
    
    ' 获取源文件夹的引用
    Set sourceFolder = fso.GetFolder(Path)
    
    
    ' 获取目标文件夹的引用
    Set targetFolder = fso.GetFolder(afterPath)
    
    ' 遍历源文件夹中的所有文件
    For Each file In sourceFolder.Files
    
     Debug.Print file.Path
        ' 复制文件到目标文件夹
        fso.CopyFile file.Path, targetFolder.Path & "\" & file.Name
        
        ' 如果需要,可以使用以下代码移动源文件到另一个文件夹
        ' fso.MoveFile file.Path, "C:\BackupFolder\" & file.Name
    Next file
    
    ' 释放对象
    Set file = Nothing
    Set targetFolder = Nothing
    Set sourceFolder = Nothing
    Set fso = Nothing
End Sub
 

  • 16
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值