Код, который открывает самый последний файл в папке. Макрос затем вытягивает информацию в мою книгу - PullRequest
0 голосов
/ 29 сентября 2019

У меня есть код, который открывает последний файл рабочей книги в указанной папке. Проблема в том, что макрос, который я настроил для извлечения информации из этого файла рабочей книги, не будет работать каждую неделю, потому что файл рабочей книги, из которого мне нужна информация, представляет собой еженедельный архивный файл. Макрос ссылается на файл книги, который называется 2019-09-16, но на следующей неделе файл книги будет 2019-09-20, макрос не сработает.

Если бы я мог получить некоторый код, чтобы сделать копию рабочей книги. Затем копия сохраняется в другой папке под общим именем, например, «Архив». Это позволило бы мне запустить макрос для получения информации из этой книги.

Я попытался напечатать код, который был у меня для открытия последнего файла, чтобы помочь связать что-то вместе с макросом, но я набрал слишком много ошибок, когда набиралЭто. Любая помощь будет принята с благодарностью.

Sub OpenLatestFile()

Declare the variables
Dim MyPath  As String
Dim MyFile  As String
Dim LatestFile  As String
Dim LatestDate  As Date
Dim LMD  As Date

MyPath = "\\C\s\CAF7\Stats\Team 1\Archive\"
If Right(MyPath, 1) <> "\" Then MyPath = MyPath & "\"
If Len(MyFile) = 0 Then
    MsgBox "No files were found...", vbExclamation
    Exit Sub
End If
Do While Len(MyFile) > 0
LMD = FileDateTime(MyPath & MyFile)

Do While Len(MyFile) > 0
LMD = FileDateTime(MyPath & MyFile)


LMD = FileDateTime(MyPath & MyFile)

If LMD > LatestDate Then
    LatestFile = MyFile
    LatestDate = LMD
    End If
MyFile = Dir

Loop
Workbooks.Open MyPath & LatestFile

Windows("Teams.xlsm").Activate
Range("F11").Select
ActiveCell.FormulaR1C1 = "='[Workbooks.Open MyPath & LatestFile]Managers Sheet'!R33C13"
Range("E12").Select
ActiveCell.FormulaR1C1 = "='[Workbooks.Open MyPath & LatestFile]Managers Sheet'!R24C13"
Range("D9").Select
ActiveCell.FormulaR1C1 = "='[Workbooks.Open MyPath & LatestFile]Managers Sheet'!R38C13"
Range("F13").Select
ActiveCell.FormulaR1C1 = "='T1'!R[7]C"
Range("F14").Select
ActiveCell.FormulaR1C1 = "='T1'!R[20]C"
Range("F15").Select
ActiveCell.FormulaR1C1 = "='T1'!R[33]C"
Range("F16").Select
ActiveCell.FormulaR1C1 = "='t1'!R[19]C[2]"
Range("F17").Select
ActiveCell.FormulaR1C1 = "='t1'!R[18]C[8]"
Range("E18:F27").Select
End Sub

Это то, что я пытался решить проблему, рабочая книга открывается нормально, но затем при попытке запустить макрос она пытается найти рабочую книгу по ссылке и можетне найти?

1 Ответ

0 голосов
/ 29 сентября 2019

Если в файле только один лист (с текущей обновленной информацией), просто обратитесь к листу по его индексу

TheLatestFile.Worksheets(1)

Если имеется несколько листов, и вы можете точно знать, где он находитсяв порядке вкладок книги вы можете использовать вместо этого известную позицию индекса.

TheLatestFile.Worksheets(KnownIndex)

Если имеется несколько листов, и вы не можете узнать их положение в порядке вкладок, вы можете получить правильный лист из кодового имени, если можетеубедитесь, что кодовое имя соответствует. При таком подходе кодовое имя не должно меняться от недели к неделе (обновленный файл - обновленный файл) И вам необходимо будет доверять доступ к модели проекта VBA.

...