Automatické odesílání sešitu na email

Programy pro práci v kanceláři (Word, Excel, Access…=>Office)

Moderátor: Mods_senior

Zamčeno
Jsimi
Level 1.5
Level 1.5
Příspěvky: 119
Registrován: 17 čer 2012 19:12

Automatické odesílání sešitu na email

Příspěvek od Jsimi »

Ahoj,
Mám jeden sešit č.1, se kterým pracuji každý den. Chtěl bych do něj vložit makro, např. při každém spuštění sešitu č.1, které by hlídalo sešit č.2 a v případě jeho změny, by tento sešit odeslalo na předem určené emaily.
Možná to jde i jednodušeji, ale myslel jsem třeba na sešitu č.1 vytvořit skrytý list, do kterého by se ukládal datum a čas každého odeslání sešitu č.2 a podle data a času jeho změny by se vyhodnocovalo, zda je třeba ho odeslat nebo ne.
Díky za každý nápad.
Uziv00

Re: Automatické odesílání sešitu na email

Příspěvek od Uziv00 »

Na to bych šel radši ve vbs. Klidně by pak mohl zapisovat či vytvářet xls soubor s daty a časy. Startoval by po spuštění PC (po přihlášení).
Jsimi
Level 1.5
Level 1.5
Příspěvky: 119
Registrován: 17 čer 2012 19:12

Re: Automatické odesílání sešitu na email

Příspěvek od Jsimi »

Jsem trochu mimo, nevím co je to vbs.
Uziv00

Re: Automatické odesílání sešitu na email

Příspěvek od Uziv00 »

visual basic script. Syntaxe je podobná jazyku VBA ve kterém se píší makra.

--- Doplnění předchozího příspěvku (11 Říj 2012 20:14) ---

Test xls souboru na změnu - nelze jednoduše použít metodu DateLast Modified protože excel změní datum a čas už při otevření souboru. Pokud se soubor nezmění, pak datum a čas vrátí zpět, jenže to už soubor může projít testem a být chybně vyhodnocen. Nicméně jsem toto obešel tak, že mažu atribut "A" testovaného souboru. Excel po uložení změn totiž tento atribut nastavuje. Kod vypadá asi takto:

Kód: Vybrat vše

Const file = "K:\Testovany.xls"  ' hlídaný soubor na změnu
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
Set oFile = fso.GetFile(file) 
Text = "Soubor " & oFile.Name & "  byl změněn" 
  If oFile.Attributes AND 32 Then 
	MsgBox Text, vbOKOnly + vbInformation, "Upozornění"
	oFile.Attributes = oFile.Attributes XOR 32
  End If
Odeslání souboru v e-mailu v případě zájmu natrénuju a dám vědět.
cmuch
Level 4.5
Level 4.5
Příspěvky: 1547
Registrován: 02 bře 2011 19:12
Bydliště: Drsná Vysočina :D

Re: Automatické odesílání sešitu na email

Příspěvek od cmuch »

Odesílání emailu z excelu je popsáno zde http://excelplus.net/news.php?readmore=122
Jsimi
Level 1.5
Level 1.5
Příspěvky: 119
Registrován: 17 čer 2012 19:12

Re: Automatické odesílání sešitu na email

Příspěvek od Jsimi »

Tak ten kod dělá to co jsem si představoval. Teď, jestli můžu poprosit, rozchodit to odeslání na emaily. Pokud se to povede, bylo by to super. Ale mám jednu poznámku. Např.ten skript by se měl spouštět automaticky po přihlášení do počítače a pokud by měl hned posílat email, tak nastává problém se spouštěním Outlooku, kde je potřeba se nejprve přihlásit k exchange serveru, takže by asi bylo potřeba to časově posunout třeba o 10 min. Možná je i jiná možnost, ale já tento skript vidím poprvé a v makrech jsem uplný začátečník, který dává makra dohromady z různých rešení, nebo za pomoci Vás všech tady na fóru.
Uziv00

Re: Automatické odesílání sešitu na email

Příspěvek od Uziv00 »

Pokud si myslel můj kód: K odeslání e-mailu outlook netřeba. Stačí vědět smtp server - předpokládám. I když přes outlook to určitě půjde taky. Počáteční zpoždění taky není problém. A pokud to bude běžet automaticky, tak tam bude muset být nekonečná smyčka, předpokládám, že bude stačit test 1x za 10 minut.
Jsimi
Level 1.5
Level 1.5
Příspěvky: 119
Registrován: 17 čer 2012 19:12

Re: Automatické odesílání sešitu na email

Příspěvek od Jsimi »

Nekonečná smyčka není ani žádaná, změnit daný soubor může oprávněná osoba v průběhu směny třeba 3x, takže následující kontrola je v hodná až na další směně, aby se neposílaly 2 emaily naprosto zbytečně, takže kontrola by právě byla spuštěna po přihlášení do PC další směnou. Přes ten SMTP server to bohužel nepůjde. Přístup k emailu je pouze přes exchange, nebo Outlook Web App.Takže si myslím že spoždění cca.10 min je ideální.
Uziv00

Re: Automatické odesílání sešitu na email

Příspěvek od Uziv00 »

Takže tady je výsledek:

Kód: Vybrat vše

'**********************************************
'*   Script testuje soubor excelu na změnu    * 
'* Pokud je soubor změněn odešle jej e-mailem *
'*       vytvořeno pro PC-Help                *
'*                                            *
'*        Etienna@Script v1.0                 *
'**********************************************

Option Explicit 
Dim fso, oFile, Text, Pause
Dim objOutlk	'Outlook
Dim objMail	'Email item
Dim strMsg
Const olMailItem = 0
Const file = "C:\testovany.xlsm"  ' hlídaný soubor na změnu
Pause = 600000 'Počáteční zpoždění v ms
WScript.Sleep Pause
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
Set oFile = fso.GetFile(file)
Text = "Soubor " & oFile.Name & "  byl změněn"
'test xls
  If oFile.Attributes AND 32 Then
   'MsgBox Text, vbOKOnly + vbInformation, "Upozornění"
   Odeslani
   oFile.Attributes = oFile.Attributes XOR 32
  End If

Sub Odeslani
'Nová zpráva
	Set objOutlk = createobject("Outlook.Application")
	Set objMail = objOutlk.createitem(olMailItem)
	objMail.To = "my.mail@blabla.cz"
	objMail.cc = "" 'Zde adresa pro kopii; objMail.bcc pro skrytou adresu
'Předmět
	objMail.subject = "Automatická zpráva " & cstr(day(now)) & ". " & cstr(month(now)) & ". " & cstr(year(now))
'Zpráva	
	strMsg = "První řádek zprávy" & vbcrlf
	strMsg = strMsg & "Druhý řádek zprávy"
'Příloha
	objMail.attachments.add(file)
	objMail.body = strMsg
	'objMail.display 'Zobraz před odesláním, jinak rovnou objMail.Send pro odeslání 
	objMail.Send
End sub
'Clean up
Set objMail = Nothing
Set objOutlk = Nothing
Set fso = Nothing
Set oFile = Nothing
Pokud bys chtěl zobrazovat zprávu o změně, pak umaž apostrof (') před MsgBox.
Vzhledem k tomu, že nejde použít SMTP je tam malá komplikace. Mkrkvosoftí klasika :oops: .
Pokud se rozhodneš zobrazit zprávu před odesláním, je to ok, jen odeslání musí schválit obsluha.
Pokud použiješ metodu obj.Mail.Send (tak jak je to napsáno) zobrazí outlook varování (viz. obrázek). Ale třeba jde outlook nastavit tak, aby to nezobrazoval - to nevím, mám ho jen v práci, jinak se mu vyhýbám jak to jen jde.

--- Doplnění předchozího příspěvku (12 Říj 2012 21:19) ---

Ještě doplnění - outlook nemusí být spuštěný. varování se ale zobrazí i tak.
Přílohy
Outlook_zpr.JPG
Outlook_zpr.JPG (16.12 KiB) Zobrazeno 4296 x
Jsimi
Level 1.5
Level 1.5
Příspěvky: 119
Registrován: 17 čer 2012 19:12

Re: Automatické odesílání sešitu na email

Příspěvek od Jsimi »

Děkuji za pomoc, funguje to perfektně. Dokonce jse mi povedlo, že není potřeba žádný zásah obsluhy, kromě toho že ten outlook, pokud není spuštěný, se spustí, požaduje přihlášení a pak se zase ukončí. Ale to není na závadu, protože první věcí kterou obsluha dělá je, že se přihlásí do Outlooku, proto to spoždění.
Ještě jednou dík.
Uziv00

Re: Automatické odesílání sešitu na email

Příspěvek od Uziv00 »

Přihlášení požaduje zřejmě proto, že jednotliví členové obsluhy mají každý jiný účet. Outlook na kterém jsem to zkoušel má jen jediný účet a automaticky se na něj přihlašuje, protona přihlášení netrval.
Uvedený příklad sloužím mj. k tomu, že ve vbs lze skoro všechno. Doufám, že příznivců vbs po tomto přibude. Téma můžeš zamknout.
Zamčeno
  • Podobná témata
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Který osobní email v době utahujících se šroubů obchodníků s osobními daty?
    od NikdoNikde » » v Komunikace na internetu
    8 Odpovědi
    37314 Zobrazení
    Poslední příspěvek od MonikaVavrova
  • Automatické přihlašování k fóru.
    od pcmaker » » v PC-HELP - připomínky k fóru
    1 Odpovědi
    5308 Zobrazení
    Poslední příspěvek od atari

Zpět na „Kancelářské balíky“