拉最新的工作簿复制选定的工作簿并粘贴在主工作簿
我正在试图查看文件夹按date拉最新的工作簿,作为我的src数据打开工作簿,从src复制选定的工作表和数据,然后粘贴到我的主工作簿。 最后closuressrc工作簿而不保存任何更改。 我在我应该放置我的文件path和文件名的问题。
Function NewestFileName(ByVal path As String, ByVal FileTemplate As String) As String Dim FileDateCrnt As Date Dim FileDateNewest As Date Dim FileNameCrnt As String Dim FileNameNewest As String If Right("G:\AOC\GROUPS1\SAC\TEST", 1) <> "\" Then path = "G:\AOC\GROUPS1\SAC\TEST" & "\" End If FileNameCrnt = Dir$("G:\AOC\GROUPS1\SAC\TEST" & Book1.xlsx) If FileNameCrnt = "Book1.xlsx" Then NewestFileName = "Book2.xlsx" Exit Function End If FileNameNewest = FileNameCrnt FileDateNewest = FileDateTime("G:\AOC\GROUPS1\SAC\TEST" & FileNameCrnt) Do While True FileNameCrnt = Dir$ If FileNameCrnt = "" Then Exit Do FileDateCrnt = FileDateTime(path & FileNameCrnt) If FileDateCrnt > FileDateNewest Then FileNameNewest = FileNameCrnt FileDateNewest = FileDateCrnt End If Loop NewestFileName = FileNameNewest Call ReadDataFromCloseFile End Function Sub ReadDataFromCloseFile() On Error GoTo ErrHandler Application.ScreenUpdating = False Dim src As Workbook Set src = Workbook.Open("G:\AOC\GROUPS1\SAC\TEST.xlsx", True, True) Dim iTotalRows As Integer iTotalRows = src.Worksheets("sheet1").Range("B1:B" & Cells(Rows.Count, "B").End(xlUp).Row) Dim iCnt As Integer For iCnt = 1 To iTotalRows Worksheets("sheet1").Range("B" & iCnt).Formula = src.Worksheets("sheet1").Range("B" & iCnt).Formula Next iCnt src.Close False Set scr = Nothing ErrHandler: Application.EnableEvents = True Application.ScreenUpdating = True End Sub
首先要做的事情
如果您有问题或遇到错误,请拼写出来。 很难找出你的错误在哪里,而不知道它出现在哪一行。
你的function在整体上并没有多大意义。 为了好好看看,评论会非常有帮助。
让我们一步一步的通过你的代码:
If Right("G:\AOC\GROUPS1\SAC\TEST", 1) <> "\" Then path = "G:\AOC\GROUPS1\SAC\TEST" & "\" End If
这个if条件总是会触发的,因为你放在那里的string总是相同的,它总是会丢失“\”。 所以,如果你的path不改变,那么你可以改变path = "G:\AOC\GROUPS1\SAC\TEST\"
FileNameCrnt = Dir$("G:\AOC\GROUPS1\SAC\TEST" & Book1.xlsx) If FileNameCrnt = "Book1.xlsx" Then NewestFileName = "Book2.xlsx" Exit Function End If
我不确定你在这里做什么。 您将FileNameCrnt
设置为第一行中的string(您缺less“\”btw)。 我想“Book1.xlsx”是你的工作簿的真实名称,所以你的string应该看起来像这样: "G:\AOC\GROUPS1\SAC\TEST\Book1.xlsx"
或者你可以做这样的事情
fileName = "Book1.xlsx" FileNameCrnt = Dir$("G:\AOC\GROUPS1\SAC\TEST" & fileName )
下一步:如果上面的行会起作用的话,你会(!)总是退出这个函数。 您将FilenameCrnt设置为Book1.xlsx,然后通过if子句检查,检查将始终返回true
,之后您将始终退出。
我知道你的循环,但它也被打破了。 首先改变这个: If FileNameCrnt = "" Then Exit Do
去做别的。 你的variables永远不会是空的,所以你的循环总是会导致运行时错误。 开始改变你的function的第一部分,并在以后得到。 我想你会有一个更好的想法是如何工作的。 自己尝试解决一些事情总是更好。 ;)
编辑:
做一个关于你的程序应该如何运行的stream程图是很有帮助的。 就像是:
- 获取我当前的文件名
- 获取我当前文件的date
- 检查是否有更新的文件(一个date比我的旧date更高的文件)
- 获取 所有文件的date(循环遍历所有文件)
- 获得最高date
- 比较我当前文件的最高date和date
- 如果有更高date的文件,则更新当前文件名到date更高的文件名
HTH
- 从Excel中读取数据并忽略python中的空行
- 基于非统一数据范围在两张纸之间链接数据
- 通过点击button将SQL查询的结果保存到Excel文件中
- 当我在excel(dd / mm / yyyy)中导入date格式到msaccess时,它显示非date值
- Excel下拉使用DataValidationHelper(POI)
- 带date的Vba Vlookup返回types不匹配错误
- java.lang.NoClassDefFoundError:org / openxmlformats / schemas / spreadsheetml / x2006 / main / ctextensionlist in groovy
- 检查列中的单元格是否重复,并检查另一列中的单元格是否为0 vba
- 在Excel中select前五位的单元格