@elninoslov
s tím nejnovějším datem je to dobrý nápad
zběžně jsem koukal na Váš kód - jak píšete chce to ještě doladit
používáte fso pro zjištění nejnovějšího souboru - tady to není potřeba, stačí použít Dir + FileDateTime
Dal jsem si ranní rozcvičku
Pokud si uvědomíme, že csv je textový soubor, pro načtení dat bych naopak fso použil - stejně jako u Vás soubor není třeba otevřít, nevytvářím žádný dočasný list ale hlavně dodržuji zásadu co nejmenšího počtu přístupů na list - vše dělám v kódu a to jej značně zrychluje. Na list tak přistupuji pouze 2x - mazání starých dat a zápis nových (přímo do tabulky)
Ve Vašem kódu navíc něco způsobuje resize tabulky (rozšířil jsem ji o 3 sloupce a stále se vrací na 7)
Bohužel se mi nepovedlo (zatím) vymyslet, jak to udělat v jednom cyklu, proto jsem musel jet cykly 2 a využít dočasné pole.
V csv souboru jsem přidal záhlaví (které předpokládám) a rozšířil ho na 142831 řádků a 4 sloupce. Myslel jsem si že budu kvůli druhému cyklu delší než Vy, ale zas tak hrozné to není - můj kód jel 16s a Váš 13. Pokud by v něm byly další listy se vzorci, bude se to patrně přiklánět na stranu mého řešení.
Neberte jako kritiku, ale jako diskusi ;)
Sub subImportCSV()
 Dim sFileTemp As String
 sFileTemp = Dir(ThisWorkbook.Path & "\*.csv")
 
 Dim sFile As String, dFileTime As Date
 While Not sFileTemp = vbNullString
 If FileDateTime(ThisWorkbook.Path & "\" & sFileTemp) > dFileTime Then
 sFile = ThisWorkbook.Path & "\" & sFileTemp
 End If
 sFileTemp = Dir
 Wend
 
 If Not sFile = vbNullString Then
 Dim vValuesTemp() As Variant
 ReDim vValuesTemp(0)
 
 With CreateObject("Scripting.FileSystemObject").OpenTextFile(sFile)
 .ReadLine 'záhlaví
 
 While Not .AtEndOfStream
 If Not IsEmpty(vValuesTemp(0)) Then
 ReDim Preserve vValuesTemp(UBound(vValuesTemp) + 1)
 End If
 vValuesTemp(UBound(vValuesTemp)) = Split(.ReadLine, ";")
 Wend
 .Close
 End With 'CreateObject("Scripting.FileSystemObject").OpenTextFile(sFile)
 
 Dim vValues() As Variant
 ReDim vValues(UBound(vValuesTemp), UBound(vValuesTemp(0)))
 Dim i As Long, j As Long
 For i = 0 To UBound(vValues, 1)
 For j = 0 To UBound(vValues, 2)
 vValues(i, j) = vValuesTemp(i)(j)
 Next j
 Next i
 
 With ActiveSheet.ListObjects("DataTab").DataBodyRange
 If .Rows.Count > 1 Then
 .Offset(1, 0).EntireRow.Delete
 End If
 .Cells(1).Resize(UBound(vValues, 1) + 1, UBound(vValues, 2) + 1).Value = vValues
 
 End With 'ActiveSheet.ListObjects("DataTab").DataBodyRange
 Else
 MsgBox ("Neexistuje žiadny .csv súbor.")
 End If
End Subcitovat