我想从存储在特定文件夹中的excel文件中复制特定范围并将其粘贴到另一个excel文件中。我能够这样做。但是,每次我运行代码时,它都从该文件夹中的第一个文件开始。仅从以前未更新的文件中复制数据。有没有办法做到这一点?例如:
“ file1.xlsx”和“ file2.xlsx”在文件夹中。我想从给定文件中复制数据并将其粘贴到“ NewFile.xlsm”中(我能够实现),但是,如果我在文件夹中添加“ file3.xlsx”和“ file4.xlsx”,然后运行宏,它也从“ file1.xlsx”和“ file2.xlsx”复制数据。我希望它这次仅从“ file3.xlsx”和“ file4.xlsx”复制数据,因为之前两个文件中的数据已经存在已保存。(我给出的代码如下)
Path = "C:\Users\National\Desktop\TEST Codes\PO\Excel\"
Filename = Dir(Path & "*.xls")
Do While Filename <> ""
If Filename = "Z master for PO.xlsm" Then
Exit Sub
End If
Workbooks.Open Filename:=Path & Filename, ReadOnly:=True
Sheets("DETAILED").Range("A3:S15").Copy
Application.DisplayAlerts = False
Application.ScreenUpdating = False
ActiveWorkbook.Close
Dim LASTROW As Long, WS As Worksheet, LS As Long
Set WS = Sheets("sheet1")
LASTROW = WS.Range("R" & Rows.Count).End(xlUp).Row + 1
WS.Range("A" & LASTROW).Select
ActiveSheet.Paste Destination:=WS.Range("A" & LASTROW)
Application.CutCopyMode = False
Filename = Dir()
Loop
Range("A7").Select
一种实现方法是查看一个DateLastAccessed
或多个DateLastModified
属性。这些都是File
对象的属性,请参阅此MS文档。
您可以设置最小日期/时间,该日期/时间应排除不需要处理的文件。
确保设置正确的参考
Option Explicit
Sub GoThroughFiles()
Dim Path As String, Filename As String,
Dim fso, fileinfo
Set fso = CreateObject("Scripting.FileSystemObject")
Path = "C:\Users\National\Desktop\TEST Codes\PO\Excel\"
Filename = Dir(Path & "*.xls")
Set fileinfo = fso.GetFile(Path & Filename)
Do While Len(Filename) > 0
If fileinfo.DateLastAccessed > DateAdd("n", -5, Now) 'If the file was last accessed less than 5 minutes ago
'Do stuff with the file
End If
FileName = Dir()
Loop
End Sub
此外,请避免同时使用Select
和,Activate
因为同时使用会使代码易于出错。这是有关如何避免这种情况的主题。紧接着,我添加了Option Explicit
它,以确保您避免其他由于拼写错误引起的错误。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句