如何通过excel宏避免覆盖并将两个文件保留在文件夹中
我创建了一个代码,通过活动工作簿中包含的部分名称复制文件,完成后,单元格将着色 我以前使用“布尔”选项覆盖文件,但现在如果目标文件夹中存在同名的相同文件,我需要将两个文件都保留在目标文件夹中。如何解决此问题如何通过excel宏避免覆盖并将两个文件保留在文件夹中,excel,vba,copy-paste,Excel,Vba,Copy Paste,我创建了一个代码,通过活动工作簿中包含的部分名称复制文件,完成后,单元格将着色 我以前使用“布尔”选项覆盖文件,但现在如果目标文件夹中存在同名的相同文件,我需要将两个文件都保留在目标文件夹中。如何解决此问题 Sub Copy_by_keyword() Dim sSrcFolder As String Dim sTgtFolder As String Dim sFilename As String Dim c As Range Dim rPatterns A
Sub Copy_by_keyword()
Dim sSrcFolder As String
Dim sTgtFolder As String
Dim sFilename As String
Dim c As Range
Dim rPatterns As Range
Dim bBad As Boolean
sSrcFolder = ("C:\Personal\Reports")
sTgtFolder = ("D:\VBA\Trade\")
Set rPatterns = ActiveSheet.Range("M10:M100").SpecialCells(xlConstants)
For Each c In rPatterns
sFilename = Dir(sSrcFolder & "*" & c.Text & "*")
If sFilename = "" Then
c.Interior.ColorIndex = 4
bBad = False 'I tried to use this as False but nothing happens'
Else
While sFilename <> ""
FileCopy sSrcFolder & sFilename, sTgtFolder & sFilename
sFilename = Dir()
c.Interior.ColorIndex = 6
Wend
End If
Next c
If bBad Then MsgBox "Files not found"
End Sub
Sub-Copy_by_关键字()
将sSrcFolder设置为字符串
将sTgtFolder设置为字符串
将sFilename设置为字符串
调光范围
变暗模式作为范围
Dim bBad作为布尔值
sSrcFolder=(“C:\Personal\Reports”)
sTgtFolder=(“D:\VBA\Trade\”)
设置rPatterns=ActiveSheet.Range(“M10:M100”).SpecialCells(xlConstants)
对于rPatterns中的每个c
sFilename=Dir(sSrcFolder&“*”&c.Text&“*”)
如果sFilename=“”,则
c、 Interior.ColorIndex=4
bBad=False“我试图将其用作False,但什么也没发生”
其他的
而sFilename“”
文件副本sSrcFolder和sFilename、sTgtFolder和sFilename
sFilename=Dir()
c、 Interior.ColorIndex=6
温德
如果结束
下一个c
如果是bBad,则MsgBox“未找到文件”
端接头
如果要保留这两个文件,请检查它是否存在,并在复制之前重命名它。
要检查它是否存在,可以使用以下代码段
Dim fso As New FileSystemObject
Dim filepath As String
filepath = "yourfilepath"
While fso.FileExists(filepath)
'rename it
Wend
要使用FileSystemObject
,必须在Windwos脚本主机对象模型上设置一个引用
编辑:回答您的评论:
您可以检查是否存在,然后打开一个消息框:
If MsgBox("Override", vbYesNo) = vbYes Then
End If
实际上,我需要的是在存在相同文件名时将两个文件都保留在目标文件夹中,就像我们手动复制时windows要求将两个文件都保留在目录中。是否可以通过vba宏完成?我非常感谢您的帮助,但不幸的是,有些文件的名称会随着时间和剩余部分的不同而变化在我看来,打开一个消息框并不是最好的解决方案。不是吗?因此,如果您没有选择使用消息框,请使用其他方法。检查文件是否存在,如果存在,请生成另一个名称。