excel - 如何仅从保存在预定义文件夹中的新 Excel 文件中复制数据?

标签 excel vba

我想从存储在特定文件夹中的 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属性(property),或 DateLastModified属性(property)。这些都是 File 的属性对象,见 this MS documentation .

您可以设置最小日期/时间,这应该排除您不想处理的文件。

一定要set the correct reference

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

此外,避免使用 SelectActivate因为两者都使用会使您的代码容易出错。 Here is a thread on how to avoid it .在此旁边,我添加了 Option Explicit这可以确保您避免其他错误,例如拼写错误。

关于excel - 如何仅从保存在预定义文件夹中的新 Excel 文件中复制数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56746682/

相关文章:

mysql - 我如何将Mysql数据导出到excel?

vba - 从 Excel 调用 Word VBA MsgBox 函数

excel - 是否可以使用字符串动态调用subs

excel - VBA 从模块调用工作表中的 SUB

excel - VBA 中的多个 Range.Find()

vba - application.worksheetfunction.sum 不评估字符串

java - 具有水平列的 Apache POI 数据透视表

excel - 如何在 Excel 的 Word.Documents.Add() 中使用嵌入的 dotx?

c# - 卡住 Openxml 中的 Pane 和列

algorithm - VBA Excel-返回数字或字符串的函数