< návrat zpět

MS Excel


Téma: Odeslání dat na email rss

Zaslal/a 11.3.2014 14:23

Ahoj, prosím o pomoc, potřebuji použít pro mou tabulku toto makro, které zkontroluje datumy v 1 sloupci a pokud odpovídají termínu dnes +30 dní, odešle údaje ze řádky na email.....vše mi funguje, jen mi to pošle údaje o jedné řádce, potom chyba 13 a hotovo....můžete mi prosím někdo poradit, kde je chyba?

Díky mooc

Sub email()

Dim ce As Range, i As Long
Dim strto As String, strcc As String, strbcc As String
Dim strsub As String, strbody As String


For i = 11 To Sheets("Katalog").Range("Y536").End(xlUp).row

If Cells(i, 25).Value = (Date + 30) Then

Dim CDO_Mail_Object As Object
Dim CDO_Config As Object
Dim SMTP_Config As Variant
Dim Email_Subject, Email_Send_From, Email_Send_To, Email_Cc, Email_Bcc, Email_Body As String
Email_Subject = ""
Email_Send_From = "Katalog" & "<xxx@xxxx.cz>"

Application.DisplayAlerts = False
Set CDO_Mail_Object = CreateObject("CDO.Message")

Set CDO_Config = CreateObject("CDO.Configuration")
CDO_Config.Load -1
Set SMTP_Config = CDO_Config.Fields
With SMTP_Config
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
'please put your server name below
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "xxxxxx"
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "xxxx@xxxx.cz"
.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "xxx"



.Update
End With


Application.DisplayAlerts = False


With Sheets("Katalog")
strto = .Cells(i, 95).Value
strcc = ""
strbcc = ""
strsub = ""
strbody = ""
End With






With CDO_Mail_Object
Set .Configuration = CDO_Config
End With
CDO_Mail_Object.Subject = strsub
CDO_Mail_Object.From = Email_Send_From
CDO_Mail_Object.To = strto
CDO_Mail_Object.TextBody = strbody
CDO_Mail_Object.cc = Email_Cc 'Use if needed
CDO_Mail_Object.BCC = Email_Bcc 'Use if needed
CDO_Mail_Object.Send

End If

Next i

End Sub

stop Uzamčeno - nelze přidávat nové příspěvky.

icon #018230
avatar
Run-time error 13 = type mismatch.
Máš buď niečo špatne zadeklarované, alebo v rámci behu makra máš v niektorej bunke, ktorú načítaš v cykle, použitú hodnotu nesprávneho datového typu. Problém nebude primárne v kóde, ale vo vstupných datách, z ktorými kód pracuje. Skús to debugovať a zistiť, na ktorom riadku kódu to háže chybu a pozrieť sa na hodnotu, ktorú to zrovna načíta. Bez samotného súboru ťažko radiť, ten kód na prvý pohľad vyzerá, že by mal fungovať, ja som si ho trochu upravil pre potreby testu a chybu mi to nehádže...citovat
#018235
avatar
Chybu mi hází řádek

If Cells(i, 25).Value = (Date + 30) Thencitovat
#018236
avatar
porovnavate nedatovu informaciu s datovou bud to osetrite s if-om
If IsDate(Cells(i, 25)) then
else
msgbox "mame tu chybu ... na riadku " & i
and if


alebo to opravite v datachcitovat
#018237
avatar
Díky, vážně tam byla chyba a jeden řádek neměl správný formát, už to chybu nehází, ale pošle to informace jen o 1 řádku a to ještě jen o tom, který je v horní části tabulky, když expiruje třeba řádek 50, neudělá to nic....nevím, kde je chybacitovat
#018238
avatar
treba skontrolovat vystup so vstupom :) a zistit co nepreslo ... ked to nevyhodilo ziadnu chybu musi byt potom chyba v makre kde s takou vecou ako v vstupe mate zadanu makro nepocita :))citovat
icon #018239
avatar
pošle to informace jen o 1 řádku a to ještě jen o tom, který je v horní části tabulky,
ten kód, asi upravený, ktorý tu uvádzaš, neposiela info o žiadnom riadku; z bunky .Cells(i, 95) ťahá zrejme mailovú adresu adresáta, ktorému posiela mail, v ktorom ale nie je nič uvedené. Asi by bolo dobré, keby si sem dal vzorový súbor aby sa to dalo otestovať, v opačnom prípade je to trochu streľba naslepo..citovat
#018241
avatar
Tak jsem se pokusil to vyloupnout z toho mého velkého souboru...díky
Příloha: zip18241_email_poslat.zip (252kB, staženo 16x)
citovat
icon #018242
avatar
Problém pmn spôsobuje tento riadok:For i = 11 To Sheets("Katalog").Range("Y536").End(xlUp).rowBunka Y536 totiž v príklade nie je prázdna a odskok .End(xlUp) spôsobí posun na riadok 11, čiže cyklus pre i beží iba raz.
Range("Y536") musíš teda nahradiť niečím iným, spôsobov, ako určiť poslednú neprázdnu bunku v stĺpci je niekoľko, to by si mohol zvládnuť to zmeniť...citovat
#018245
avatar
Díííky!!! To byla ta chyba, vyčištěno, opraveno, paráda, díky.citovat

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje