VBA代码,用于将共享驱动器上的文件中的最新数据复制和粘贴到主文件中

VBA代码,用于将共享驱动器上的文件中的最新数据复制和粘贴到主文件中,vba,excel,macros,Vba,Excel,Macros,我很好奇如何编写一个宏来根据日期顺序拾取最新的文件 我编写了一个宏,用于将位于共享驱动器上的文件中的数据复制并粘贴到主控文件中,但现在需要对其进行更改,以便它拾取最新的excel文件。我已将我的文件命名为以下格式“20160411” 有什么想法吗 我意识到这可能是一个模糊的帖子,所以我将尝试进一步详细解释 这是我目前拥有的代码: Sub PullFromFile() Dim wkb As Workbook, wkbFrom As Workbook Set wkb = ThisWorkbook

我很好奇如何编写一个宏来根据日期顺序拾取最新的文件

我编写了一个宏,用于将位于共享驱动器上的文件中的数据复制并粘贴到主控文件中,但现在需要对其进行更改,以便它拾取最新的excel文件。我已将我的文件命名为以下格式“20160411”

有什么想法吗

我意识到这可能是一个模糊的帖子,所以我将尝试进一步详细解释

这是我目前拥有的代码:

Sub PullFromFile()

Dim wkb As Workbook, wkbFrom As Workbook

Set wkb = ThisWorkbook '-> assuming the workbook you want to copy to has code in it
Set wkbFrom = Workbooks.Open("\\drive\folder\PRICING\file name\file name \2016\20160411.xls")

Dim wks As Worksheet
Set wks = wkbFrom.Sheets("Ratesheet")

Dim rng As Range
Set rng = wks.Rows("7:2000")  '-> set your specific rows, here

rng.Copy wkb.Sheets("Ratesheet Current").Range("A7") '-> adjust to your settings

wkbFrom.Close False

End Sub

假设您的意思是希望循环浏览给定控制器中的文件,所有这些文件的文件名均为“yyyymmdd”,并选择最新的文件名。。。您可以对循环使用
Dir
函数,也可以使用
DateSerial
函数将文件名转换为日期,然后获取最近的文件名。代码如下所示(但需要进行一些错误处理以避免恶意文件名或工作簿进入路径文件夹):


对于您的代码,请在ITI上使用ctrl-K以运行此操作。我是否将其粘贴到现有代码上方,并在“[您的路径位于此处]”部分添加我的文件路径@Ambie@SamuelLeak,是,路径将类似于“c:\docs\abc”。要运行它,请将光标放在例程中并按F5。但是,如果您需要问这种类型的问题,您可能希望先读一读VBA(不是加载,只是基础知识),否则您只是将未知代码粘贴到项目中。
Sub RunMe()
    Dim path As String
    Dim fileName As String
    Dim dd As Integer
    Dim mm As Integer
    Dim yyyy As Integer
    Dim dat As Date
    Dim latest As Date
    Dim wkb As Workbook

    path = "[Your path goes here]"
    fileName = Dir(path & "\*.xls")
    Do Until fileName = vbNullString
        yyyy = Int(Left(fileName, 4))
        mm = Int(Mid(fileName, 5, 2))
        dd = Int(Mid(fileName, 7, 2))
        dat = DateSerial(yyyy, mm, dd)
        If dat > latest Then dat = latest
        fileName = Dir()
    Loop
    fileName = Format(dat, "yyyymmdd") & ".xls"
    Set wkb = Workbooks.Open(path & "\" & fileName)
End Sub