Kód: Vybrat vše
Sub UlozList()
'
Dim strNazevOpen As Workbook
Dim strNazev As String
Dim strSlozka As String
Dim strSesit As String
Dim strRok As String
Dim strMesic As String
Dim strCesta As String
Dim Fso As Object
Dim Slozka, Rok, Mesic, Den, AShNm As Variant
Dim FrstEmptyRow As Long
Dim ValueQuantity, RCopy As Integer
Slozka = "reporty_databáza"
Rok = Year(Now())
Mesic = Month(Now())
Den = Day(Now())
AShNm = ActiveSheet.Name
ValueQuantity = ActiveSheet.Range("L7")
RCopy = 1
'Vytvori nazov budouciho sesitu
strNazev = Den & "_" & AShNm & ".xlsx"
'Vytvori cestu slozky
strSlozka = "c:\" & Slozka
'Vytvori cestu sesitu
strSesit = "c:\" & Slozka & "\" & AShNm
'Vytvori cestu roku
strRok = "c:\" & Slozka & "\" & AShNm & "\" & Rok
'Vytvori cestu mesice
strMesic = "c:\" & Slozka & "\" & AShNm & "\" & Rok & "\" & Mesic
Application.ScreenUpdating = False
Set Fso = CreateObject("Scripting.FileSystemObject")
'Pokud složka neexistuje, tak ju vytvoríme
If Fso.FolderExists(strSlozka) = False Then Fso.CreateFolder (strSlozka)
'Pokud složka sesitu neexistuje, tak ju vytvoríme
If Fso.FolderExists(strSesit) = False Then Fso.CreateFolder (strSesit)
'Pokud složka rok neexistuje, tak ju vytvoríme
If Fso.FolderExists(strRok) = False Then Fso.CreateFolder (strRok)
'Pokud složka mesice neexistuje, tak ju vytvoríme
If Fso.FolderExists(strMesic) = False Then Fso.CreateFolder (strMesic)
'Kontrola, zda již ve složce není soubor stejného názvu
If Fso.FileExists(strMesic & "\" & strNazev) Then
Set strNazevOpen = Workbooks.Open(strMesic & "\" & strNazev)
Windows("forma reportov_GEN_USB.xlsm").Activate
ActiveSheet.Copy Before:=Workbooks(strNazev).Sheets(1)
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
ActiveWorkbook.Close True
Else
Sheets(AShNm).Copy
ActiveWorkbook.SaveAs Filename:= _
strMesic & "\" & strNazev, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
ActiveWorkbook.Close True
End If
Set Fso = Nothing
'otevre sesit s reportama a nakopiruje tam hodnoty a vytvori hyp.odkaz
Workbooks.Open Filename:="C:\reporty_databáza\reporty.xlsx"
znovu:
FrstEmptyRow = Cells(Rows.Count, 1).End(xlUp).Row + 1
Windows("forma reportov_GEN_USB.xlsm").Activate
Range("L6:N6").Copy
Windows("reporty.xlsx").Activate
Range("A" & FrstEmptyRow).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("forma reportov_GEN_USB.xlsm").Activate
Range("F10:I10").Copy
Windows("reporty.xlsx").Activate
Range("B" & FrstEmptyRow).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("forma reportov_GEN_USB.xlsm").Activate
Range("F9:I9").Copy
Windows("reporty.xlsx").Activate
Range("C" & FrstEmptyRow).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("forma reportov_GEN_USB.xlsm").Activate
Range("L8:N8").Copy
Windows("reporty.xlsx").Activate
Range("D" & FrstEmptyRow).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("forma reportov_GEN_USB.xlsm").Activate
Range("L7:N7").Copy
Windows("reporty.xlsx").Activate
Range("E" & FrstEmptyRow).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("forma reportov_GEN_USB.xlsm").Activate
Range("F6:I6").Copy
Windows("reporty.xlsx").Activate
Range("F" & FrstEmptyRow).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("forma reportov_GEN_USB.xlsm").Activate
Range("L9:N9").Copy
Windows("reporty.xlsx").Activate
Range("G" & FrstEmptyRow).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Range("H" & FrstEmptyRow).Select
'vytvori hyp.odkaz
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:= _
strMesic & "\" & strNazev, TextToDisplay:="odkaz"
'jake bude pozadi na zaklade L7
If ValueQuantity <= 1000 Then
GoTo konec
ElseIf ValueQuantity > 1000 And ValueQuantity < 3000 Then
Range("a" & FrstEmptyRow & ":h" & FrstEmptyRow).Interior.Color = 65535 'zlute pozadi
If RCopy = 2 Then GoTo konec
RCopy = RCopy + 1
GoTo znovu
ElseIf ValueQuantity >= 3000 Then
Range("a" & FrstEmptyRow & ":h" & FrstEmptyRow).Interior.Color = 39423 'oranz. pozadi
If RCopy = 3 Then GoTo konec
RCopy = RCopy + 1
GoTo znovu
End If
konec:
Range("A1").Select
'ulozi bez ohlaseni chyby na panelu
Application.DisplayAlerts = False
ActiveWorkbook.Close True
Application.DisplayAlerts = True
Application.ScreenUpdating = True
MsgBox "List zkopirovan.", vbInformation
End Sub