Небольшой фон
Я открываю два последних файла в указанной папке c. (У меня есть два действия, которые открывают закомментированные файлы.) Затем я хочу, чтобы макрос просматривал обе эти wbs (vars недавний & prev ), чтобы вычислить значения для новый wb ("test.xlsx"). На мой взгляд, этот код имеет небольшой смысл:
Код:
Sub twolatestfiles()
Dim FileSys, objFile, myFolder, c As Object
Dim wb1 As Workbook
Dim wb2 As Workbook
Dim strFilename, strFilename2, FolderName As String
Dim dteFile As Date
FolderName = ("C:\FilePath\Folder")
Set FileSys = CreateObject("Scripting.FileSystemObject")
Set myFolder = FileSys.GetFolder(FolderName)
dteFile = DateSerial(1900, 1, 1)
For Each objFile In myFolder.Files
If InStr(1, objFile.Name, ".xlsx") > 0 Then
If objFile.DateLastModified > dteFile Then
dteFile = objFile.DateLastModified
strFilename2 = strFilename
strFilename = objFile.Name
End If
End If
Next objFile
' Set wb1 = Workbooks.Open(FolderName & Application.PathSeparator & strFilename)
' Set wb2 = Workbooks.Open(FolderName & Application.PathSeparator & strFilename2)
Set FileSys = Nothing
Set myFolder = Nothing
Dim recent, prev As String
recent = Right(strFilename, Len(strFilename) - 2)
prev = (CStr(strFilename2))
Call populate_fields(ByVal prev, ByVal recent, "test.xlsx")
End Sub
Sub populate_fields(wb1 As String, wb2 As String, activewb As String)
ActiveCell.FormulaR1C1 = "='[" & wb1 & "]SUMMARY'!R11C2-'[" & wb2 & "]SUMMARY'!R11C2"
Range("C4").Select
ActiveCell.FormulaR1C1 = "='[" & wb1 & "]SUMMARY'!R11C2"
Range("D4").Select
ActiveCell.FormulaR1C1 = "='[" & wb1 & "]SUMMARY'!R11C3-'[" & wb2 & "]SUMMARY'!R11C3"
Range("E4").Select
ActiveCell.FormulaR1C1 = "='[" & wb1 & "]SUMMARY'!R11C8"
Range("F4").Select
ActiveCell.FormulaR1C1 = "='[" & wb1 & "]SUMMARY'!R11C3"
Range("G4").Select
ActiveCell.FormulaR1C1 = "='[" & wb1 & "]SUMMARY'!R11C5-'[" & wb2 & "]SUMMARY'!R11C5"
Range("H4").Select
ActiveCell.FormulaR1C1 = "='[" & wb1 & "]SUMMARY'!R11C5"
Range("J4").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "=RC[-2]/RC[-4]"
Range("J5").Select
End Sub
Проблема: Каждый раз, когда я пытаюсь запустите sub:
Call populate_fields(ByVal prev, ByVal recent, "test.xlsx")
Программа сообщает мне, что они не совпадают, но обе являются строками. Я поставлен в тупик, как решить эту проблему. Я получаю обе переменные внизу, чтобы вернуть нужные мне значения. Поскольку файлы будут меняться каждый день, я не могу набирать сами имена файлов.
Я очень новичок в VBA. Любая помощь приветствуется.
Редактировать: Я также попытался напрямую ввести текст (имя файла) в переменные. Также открыты файлы.