vložte do modulu ve VBA Editoru tento kód níže. Podmínkou pro funkčnost makra je, aby všechny sešity byly ve stejné složce, a aby se jména listů (hárkov) jmenovali stejně jak máte v popisku a to "Hárok1" a "Hárok2"
Sub KopirujDataPredoslehoMesiaca()
Dim nazvyMesiacov As Variant
Dim aktZosit As Workbook, predZosit As Workbook
Dim aktHarok As Worksheet, predHarok As Worksheet
Dim aktMesiac As String, predMesiac As String
Dim aktRok As String, predRok As String
Dim cesta As String, nzvPredZositu As String
nazvyMesiacov = Array(" január ", " február ", " marec ", " apríl ", " máj ", " jún ", " júl ", " august ", " september ", " október ", " november ", " december ")
' Získaj aktuálny Zošit a Hárok
Set aktZosit = ThisWorkbook
Set aktHarok = aktZosit.Sheets("Hárok2")
' Získaj aktuálny mesiac a rok z názvu súboru
aktMesiac = Month(Date)
aktRok = Year(Date)
' Nastav predchádzajúci mesiac a rok
If aktMesiac = 1 Then
predMesiac = nazvyMesiacov(11)
predRok = aktRok - 1
Else
predMesiac = nazvyMesiacov(aktMesiac - 2)
predRok = aktRok
End If
nzvPredZositu = "Súhrn" & predMesiac & predRok
' Nastav predpokladané prípony súborov
Dim pripona As Variant, pripony As Variant
pripony = Array(".xlsx", ".xls", ".xlsm")
Dim nalezSuboru As Boolean
nalezSuboru = False
' Skontroluj každú príponu súboru
For Each pripona In pripony
cesta = aktZosit.Path & "\" & nzvPredZositu & pripona
If Dir(cesta) <> "" Then
nalezSuboru = True
Exit For
End If
Next pripona
If Not nalezSuboru Then
MsgBox "Predchádzajúci súbor neexistuje alebo cesta nie je správna: " & aktZosit.Path & "\" & nzvPredZositu
Exit Sub
End If
' Otvor predchádzajúci Zošit
Set predZosit = Workbooks.Open(cesta)
' Nastav predchádzajúci sheet
Set predHarok = predZosit.Sheets("Hárok1")
' Skopíruj údaje z predchádzajúceho sheetu do aktuálneho
aktHarok.Range("C13:N13").Value = Application.Transpose(predHarok.Range("C10:C21").Value)
' Zatvor predchádzajúci workbook bez uloženia zmien
predZosit.Close SaveChanges:=False
MsgBox "Údaje boli úspešne skopírované z " & nzvPredZositu
End Subcitovat