Advertisement
Mates31cz

Rozpis

Dec 4th, 2024 (edited)
25
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Sub RozpisObrazek()
  2.  
  3.     ' Dim proměnné
  4.    Dim cht As ChartObject
  5.     Dim ws As Worksheet
  6.     Dim rng As Range
  7.     Dim DesktopPath As String
  8.     Dim FileName As String
  9.     Dim Mesic As String
  10.     Dim DatumCas As String
  11.     Dim UserResponse As VbMsgBoxResult
  12.  
  13.     ' Nastavení listu a rozsahu
  14.    Set ws = ActiveSheet
  15.     Set rng = ws.Range("D10:AJ24")
  16.  
  17.     ' Získání aktuálního měsíce z F10
  18.    Mesic = ws.Range("F10").Value
  19.     If Mesic = "" Then
  20.         MsgBox "Buňka F10 je prázdná, nelze uložit.", vbExclamation
  21.         Exit Sub
  22.     End If
  23.  
  24.     ' Získání aktuálního data a času
  25.    DatumCas = Format(Now, "yyyy-mm-dd hh-mm-ss")
  26.  
  27.     ' Cesta na plochu a vytvoření složky "Rozpisy", pokud neexistuje
  28.    DesktopPath = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\Rozpisy\"
  29.     If Dir(DesktopPath, vbDirectory) = "" Then
  30.         MkDir DesktopPath
  31.     End If
  32.  
  33.     ' Přidání názvu souboru do cesty
  34.    FileName = DesktopPath & "Rozpis " & Mesic & " " & DatumCas & ".png"
  35.  
  36.     ' Kopírování rozsahu jako obrázku
  37.    rng.CopyPicture Appearance:=xlScreen, Format:=xlPicture
  38.  
  39.     ' Vytvoření dočasného objektu grafu
  40.    Set cht = ws.ChartObjects.Add(Left:=rng.Left, Width:=rng.Width, Top:=rng.Top, Height:=rng.Height)
  41.     With cht
  42.         .Activate
  43.         .Chart.Paste
  44.         .Chart.Export FileName:=FileName, FilterName:="PNG"
  45.         .Delete ' Smazání dočasného grafu
  46.    End With
  47.  
  48.     ' Potvrzení uživateli
  49.    UserResponse = MsgBox("Rozsah byl uložen jako obrázek na plochu: " & FileName & vbCrLf & _
  50.                           "Chcete obrázek odeslat e-mailem?", vbYesNo + vbQuestion, "Odeslat e-mailem?")
  51.  
  52.     ' Pokud uživatel zvolí Ano, otevřeme Outlook a vytvoříme e-mail
  53.    If UserResponse = vbYes Then
  54.         OdeslatRozpisObrazek FileName, "Rozpis " & Mesic, ws.Name
  55.     End If
  56. End Sub
  57.  
  58. ' Funkce pro odeslání e-mailu
  59. Sub OdeslatRozpisObrazek(FilePath As String, FileName As String, ListName As String)
  60.     Dim OutlookApp As Object
  61.     Dim OutlookMail As Object
  62.  
  63.     ' Vytvoření instance aplikace Outlook
  64.    Set OutlookApp = CreateObject("Outlook.Application")
  65.     Set OutlookMail = OutlookApp.CreateItem(0)
  66.  
  67.     With OutlookMail
  68.         .To = "" ' Zadejte e-mailovou adresu příjemce
  69.        .SentOnBehalfOfName = "OstrahaBrno@ceskatelevize.cz" ' Odeslat jménem této adresy
  70.        .Subject = "ČT Brno rozpis směn na měsíc " & ListName
  71.         .Body = "V příloze najdeš svůj rozpis směn." & vbCrLf & _
  72.                 "Tak si jej hezky poznamenej a přijď včas!" & vbCrLf & vbCrLf & _
  73.                 "Vytvořeno: " & Now & vbCrLf & vbCrLf & _
  74.                 "Generováno a odesláno automatickým automatem."
  75.         .Attachments.Add FilePath
  76.         .Display ' Zobrazí e-mail před odesláním
  77.    End With
  78.  
  79.     ' Vyčištění
  80.    Set OutlookMail = Nothing
  81.     Set OutlookApp = Nothing
  82. End Sub
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement