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