写一个VBA宏,需求按表格A列格子内容命名和新建文件夹,将旧文件复制改名筛选放入对应的新建文件夹里
时间: 2024-03-01 12:55:33 浏览: 83
好的,以下是VBA宏的代码,其中需要你自行修改一些变量以适应你的具体需求:
```
Sub CopyAndFilterFiles()
' 定义变量
Dim sourceFolder As String
Dim oldFileName As String
Dim newFileName As String
Dim fileExtension As String
Dim filterCriteria As String
Dim destinationFolder As String
Dim folderName As String
Dim cell As Range
' 设置变量值
sourceFolder = "C:\OldFolder\" ' 原文件夹路径
fileExtension = "*.xlsx" ' 文件扩展名
filterCriteria = "Sales" ' 筛选条件
' 遍历每个单元格
For Each cell In Range("A2:A" & Range("A" & Rows.Count).End(xlUp).Row)
' 获取文件夹名称
folderName = cell.Value
' 创建新文件夹
destinationFolder = "C:\NewFolder\" & folderName & "\"
MkDir destinationFolder
' 处理每个符合条件的文件
oldFileName = Dir(sourceFolder & fileExtension)
Do While oldFileName <> ""
' 仅处理符合条件的文件
If InStr(oldFileName, filterCriteria) > 0 Then
' 修改文件名
newFileName = Left(oldFileName, Len(oldFileName) - 5) & "_" & folderName & ".xlsx"
' 复制文件到新文件夹
FileCopy sourceFolder & oldFileName, destinationFolder & newFileName
' 进行筛选操作
Workbooks.Open destinationFolder & newFileName
With ActiveSheet
.AutoFilterMode = False
.Range("A1").AutoFilter Field:=1, Criteria1:=">1000"
.Range("A1").CurrentRegion.Copy Worksheets.Add.Range("A1")
.AutoFilterMode = False
End With
ActiveWorkbook.Save
ActiveWorkbook.Close
End If
oldFileName = Dir
Loop
Next cell
' 完成提示
MsgBox "处理完成!"
End Sub
```
请将上述代码复制到 VBA 编辑器中 (按 Alt + F11 打开),并将其中的变量值修改为你的具体需求。在运行宏之前,请务必备份你的原始文件,以防不测。
阅读全文