e-mail iz excela

Pomoč pri izdelavi makrov
DusanS
Prispevkov: 31
Pridružen: To Jul 26, 2005 11:16 am

e-mail iz excela

Odgovor Napisal/-a DusanS »

Lepo pozdravljeni. Zelo sem vas že pogrešal, ker imam kup vprašanj. Ampak danes le na eno temo, ki pa je verjetno zanimiva za mnoge.
Že pred časom (teme ne najdem več) ste nekomu pomagali z makrom, ki pošlje e-mail. Jaz sem ga malo spremenil in sedaj je takšen:

Koda: Izberi vse

Sub PosljiEPosto()
    Dim iMsg As Object
    Dim iConf As Object
    Dim y As Integer
    Dim fil As String
    
    y = ActiveCell.Row
    fil = Cells(y, 4).Value & ".doc" ' dobi ime priloge

    Set iMsg = CreateObject("CDO.Message")
    Set iConf = CreateObject("CDO.Configuration")

    With iMsg
        Set .Configuration = iConf
        .To = Cells(y, 12).Value ' dobi e-naslov
        .CC = ""
        .BCC = ""
        .From = "dusan.f@siol.net"
        .Subject = Cells(y, 3).Value
        .TextBody = "LP Dušan"
        .AddAttachment "c:\Moji dokumenti\" & fil
        .Send
    End With
    
    Set iMsg = Nothing
    Set iConf = Nothing
End Sub
Dočočiš naslov, tekst, prilogo in email je poslan. Kako pa bi poslal excelov zvezek v katerem teče makro (torej aktivni zvezek), ali celo samo en list tega zvezka? Ali je to možno? Na splošno pa me zelo zanima kako najti vse te zanimive lastnosti nekega objekta.

LP Dušan
admin
Site Admin
Prispevkov: 3687
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

Pozdravljeni,

Več o nedelovanju strežnika si lahko preberete med obvestili foruma :(.

Zdaj pa k vprašanjem:
  1. Tekoči delovni zvezek pošljete na povsem enak način, S tem da ga pač prej shranite in v vrstici AddAttachment zapišete celoten naslov tega delovnega zvezka.
  2. Če želite poslati samo en list lahko odprete nov delovni zvezek vanj prekopirate izbran delovni list. Zvezek shranite in ga pošljeto kot prilogo.
  3. Lastnosti takšnih objektov pa je najlažje najti na internetu. Konkretno za te objekte na strani http://msdn.microsoft.com/library/defau ... ration.asp
lp,
Matjaž Prtenjak
Administrator
DusanS
Prispevkov: 31
Pridružen: To Jul 26, 2005 11:16 am

e-mail ne deluje več

Odgovor Napisal/-a DusanS »

Je bilo prelepo, da bi trajalo! :cry: :x V podjetju kjer delam so spremenili delovanje elektronske pošte. Sedaj uporabljamo MS outlook 2003 in exchange server. Torej nič več pop3 in smtp temveč CLMAIL... Windows XP in Excell 2003 smo uporabljali že prej.
Posledica je nedelovanje zornjega makra za pošiljanje pošte iz excela.
Javlja napako Run-time error 2147220960 (80040220) in tekst "The SendUsing configuration value is invalid"
Iskreno povedano nimam pojma kaj storiti. Bi bil zelo vesel vaše pomoči.
LP Dušan
admin
Site Admin
Prispevkov: 3687
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

Pozdravljeni,

Dodajte sledeče vrstice in stvar bi morala delovati za naslove znotraj domene:

Koda: Izberi vse

    Set iConf = CreateObject("CDO.Configuration") 

  ' to dodajte

    iConf.Load -1    ' CDO Source Defaults
    Set Flds = iConf.Fields
    With Flds
     .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
     .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "<SMTP strežnik>"
     .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
     .Update
    End With

  ' konec dodajanja

    With iMsg 
Ustrezno morate popraviti še sevedta naziv vašega SMTP strežnika. Lahko pa da boste imeli probleme pri pošiljanju pošte izven vaše domene (zaščita pred SPAM-om oz. nezaželjeno pošto!).
lp,
Matjaž Prtenjak
Administrator
DusanS
Prispevkov: 31
Pridružen: To Jul 26, 2005 11:16 am

e-mail

Odgovor Napisal/-a DusanS »

Ja, to je to. Res se zahvaljujem za to zelo konkretno pomoč. S tem dodatkom email spet lepo deluje.
Med tem sem upošteval enega izmed prejšnjih nasvetov: išči po internetu. Na naslovu http://www.rondebruin.nl/sendmail.htm je več zanimivih primerov z uporabo MS Outlook. Morda kdo potrebuje prav to.

LP Dušan
kljuka13
Prispevkov: 257
Pridružen: Po Sep 10, 2007 4:29 pm
Kraj: Maribor

Odgovor Napisal/-a kljuka13 »

admin napisal/-a:Pozdravljeni,

Več o nedelovanju strežnika si lahko preberete med obvestili foruma :(.

Zdaj pa k vprašanjem:
  1. Tekoči delovni zvezek pošljete na povsem enak način, S tem da ga pač prej shranite in v vrstici AddAttachment zapišete celoten naslov tega delovnega zvezka.
  2. Če želite poslati samo en list lahko odprete nov delovni zvezek vanj prekopirate izbran delovni list. Zvezek shranite in ga pošljeto kot prilogo.
  3. Lastnosti takšnih objektov pa je najlažje najti na internetu. Konkretno za te objekte na strani http://msdn.microsoft.com/library/defau ... ration.asp
Meni pa ne uspe poslati dokumenta (Word). Napiše, da trenutno dokument uporablja drug program :cry:

EDIT:

Urejeno :) ActiveDocument.SendForReview
[img]http://shrani.si/f/3t/YL/4W2P37B9/office.gif[/img]
[img]http://shrani.si/f/12/aa/1rt1wj6i/1/userbardionaea.gif[/img]
[img]http://shrani.si/f/3D/nN/3RQySBCl/vista-copy.gif[/img]
Buba
Prispevkov: 85
Pridružen: Sr Mar 12, 2008 11:49 am
Kraj: Maribor

Re: e-mail iz excela

Odgovor Napisal/-a Buba »

Pozdravljeni!
Moje vprašanje se navezuje na to temo, zato nisem odpiral nove. Uporabil sem makro za pošiljanje pošte, ki je lepo deloval, sedaj pa javi napako:
The server rejected one or more recipient addresses.
The servers response was: 550.5.7.1
Unable to relay.

Ročno (brez makroja) lahko pošljem pošto prejemniku A. Če spremenim naslov prejemnika A v naslov prejemnika B nov prejemnik dobi pošto.

Zakaj ne gre poslat pošte prejemniku A ? (Dvomim, da sem se zatipkal pri pisanju naslova. :| )

Lep dan! :?
Buba
admin
Site Admin
Prispevkov: 3687
Pridružen: Sr Jul 20, 2005 10:06 pm

Re: e-mail iz excela

Odgovor Napisal/-a admin »

Odgovor je dokaj preprost. Pošte ne morete poslati, ker je strežnik zavrnil enega ali več prejemnikov - to je tudi besedilo napake... Zakaj pa je konkretnega naslovnika strežnik zavrnil pa vem ne morem povedati, ker nimam vpogleda v ta strežnik...

Če pa temu istemu prejemniku sicer lahko pošiljate pošto pa sta možni razlagi dve:
1. Lahko mu jo pošiljate preko drugega strežnika (ki ga ne zavrača) npr. google ali siol...
2, možno da ste se res zatipkali ;)
lp,
Matjaž Prtenjak
Administrator
Tomahawk
Prispevkov: 8
Pridružen: To Jul 18, 2017 5:00 pm

Re: e-mail iz excela

Odgovor Napisal/-a Tomahawk »

Pozdravljeni,
Navdušila me je možnost, da lahko iz excela neposredno pošlješ email na nekega naslovnika.
Nisem pa zasledil, da bi se lahko mail poslal na nekega naslovnika AVTOMATSKO, ko je dosežen nek DATUM v neki celici.
Nisem še kos excelu na tako visoki ravni a bi mi zelo prav prišlo, če bi mi nekdo lahko predstavil samo takle primer;
Ko se v celici A1 pojavi datum, recimo : 01.01.2017
se avtomatsko GENERIRA in POŠLJE mail na naslovnika xxx.yyy@gmail.com
s sporočilom : "Potekel je rok"
, brez da bi bilo potrebno odpirati Outlook in pisati naslovnika, pisati sporočilo in pritisniti SEND.
V naprej hvala za pomoč

l.p.
admin
Site Admin
Prispevkov: 3687
Pridružen: Sr Jul 20, 2005 10:06 pm

Re: e-mail iz excela

Odgovor Napisal/-a admin »

Pozdravljeni,

V kolikor bi del makra napisali sami, bi vam lahko pomagal, tako pa vam lahko ponudim izdelavo makra
lp,
Matjaž Prtenjak
Administrator
Tomahawk
Prispevkov: 8
Pridružen: To Jul 18, 2017 5:00 pm

Re: e-mail iz excela

Odgovor Napisal/-a Tomahawk »

Pozdrav,
ja, nikoli nisem tako komot, da bi kar pričakoval, da mi bo vse na pladnju prinešeno.
Mučil sem se že z idejami iz interneta. Ena izmed mi sicer deluje v kolikor startam Run, vendar, bi to želel, da se zgodi samodejno, ko neka celica doseže neko vrednost.
Ta del izgleda takole;

Sub Mail_Outlook()

Dim OutApp As Object
Dim OutMail As Object
Dim TEXT As String

Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)

TEXT = "Rok za dokončanje aktivnosti je potekel !"

On Error Resume Next
With OutMail
.To = "xxx.yyy@gmail.com"
.CC = ""
.BCC = ""
.Subject = "Aktivnosti"
.Body = TEXT
.Display
End With
On Error GoTo 0

Set OutMail = Nothing
Set OutApp = Nothing
End Sub
admin
Site Admin
Prispevkov: 3687
Pridružen: Sr Jul 20, 2005 10:06 pm

Re: e-mail iz excela

Odgovor Napisal/-a admin »

Pozdravljeni,

Potem je to preprosto.

V forumu si preberite vse o funkciji Worksheet_Change, saj to ni navadna funkcija, temveč odziv na dogodek. O tem sem že velikokrat govoril in to tudi podrobno razložil. Tudi na spletišču boste našli razlago (recimo Nasvet #1322.

Ko boste torej pravilno vnesli omenjen dogodek tja vpišete sledeče:

Koda: Izberi vse

Private Sub Worksheet_Change(ByVal Target As Range)
  If (Range("A1") = "x") Then
    Mail_Outlook
  End If
End Sub
Ustrezno seveda tudi popravite pogoj oz. if stavek, ki zdaj pač testira kdaj se v celici A1 pojavi x
lp,
Matjaž Prtenjak
Administrator
Tomahawk
Prispevkov: 8
Pridružen: To Jul 18, 2017 5:00 pm

Re: e-mail iz excela

Odgovor Napisal/-a Tomahawk »

Pozdrav,
Res hvala. Sedaj sem razširil macro, da deluje na način, da avtomatično naslovi mail na vsak naslov v vsaki vrstici, kjer je bil recimo presežen datum dokončanja aktivnosti.
Learning by example, morda ni prav pristop a vendar si zelo pomagam z že napisanimi primeri. Idej mi res ne zmanjka.

Sedaj pa poizvedujem, a (še) ne najdem možnosti, da bi EXCEL iz zaprte(shranjene) datoteke sam poslal mail na vse osebe, katerim so potekli roki, VENDAR se ključni podatek tekoči datum, ki se primerja s ciljnim datumom, v celici spremeni
šele takrat, ko datoteko odprem.
Ker ta možnost verjetno, ali pak, ne obstaja ?

mojih idej ni pri koncu..

Drugo možnost vidim v tem, da bi se določena datoteka v EXCEL_u vsak dan SAMODEJNO odprla + shranila + zaprla. Je to mogoče, mogoče z neko routino izven EXCEL_a ?
(Pred mnogimi leti smo nekaj podobnega v DOS_u lahko počeli z t.i. *.BAT datotekami ob zagonu računalnika ali pa tudi sicer)
To pa zaradi tega, da so shranjeni novi datumi z namenom, da ne bi mail bil večkrat poslan.
(Ko macro pošlje mail, se ta inf. shrani in mail naslednjič, ko je ciljni datum še bolj presežen, ne pošilja ponovno mailov)
admin
Site Admin
Prispevkov: 3687
Pridružen: Sr Jul 20, 2005 10:06 pm

Re: e-mail iz excela

Odgovor Napisal/-a admin »

Pozdravljeni,

Za novo vprašanje prosim odprite novo tematiko, saj se sicer stvari čisto izgubijo.

Glede vašega vprašanja pa sledeče:
  1. Excel ne more sprožiti nobene kode, v kolikor ne teče. Torej če Excel ni zagnan, ne more izvajati programske kode
  2. Kar želite narediti, lahko naredite in je dokaj preprosto!
    • Napisati morate makro, ki bo izvedel, kar želite
    • Ta makro morate izvesti avtomatično, ko se Excel odpre oz. ko odprete to datoteko v Excelu - to naredite z uporabo makra Auto_open o katerem si lahko več preberete na forumu oz. na mojem spletišču
    • Poskrbeti morate, da se ob določenam času avtomatično odpre ta datoteka, v katero ste napisali auto_open makro - to pa naredite na nivoju Oken v Razporejevalniku opravil
lp,
Matjaž Prtenjak
Administrator
Tomahawk
Prispevkov: 8
Pridružen: To Jul 18, 2017 5:00 pm

Re: e-mail iz excela

Odgovor Napisal/-a Tomahawk »

Hvala. Nisem vedel za task scheduler.
Sedaj sem nastavil, da se mi vsakodnevno starta EXCEL ob določeni uri in ko se odpre, funkcija TODAY() v določenih celicah samodejno(pri odprtju datoteke) spremeni datum na t.i. današnji in
potem že napisan macro sam naslovi elektronska sporočila(maile) na osebe, katerim so taski potekli. Vse kar moram storiti je, da zaprem datoteko brez shranjevanja.

Če pa bi napisal Auto_open macro, ki bi se samodejno startal ob zagonu Excel_a, ter takoj za tem zaprl(kar bi sicer tudi samodejno naslovilo maile na osebe), potem bi imel težave, ko bi startal to isto datoteko
za editiranje. (..ker bi se mi po zagonu samodejno zaprl...)
Odgovori