Note: The other languages of the website are Google-translated. Back to English

Hogyan küldhetünk automatikusan e-mailt az Excel cellája alapján?

Tegyük fel, hogy e-mailt szeretne küldeni az Outlook segítségével egy bizonyos címzettnek az Excel megadott cellája alapján. Például, ha a munkalap D7 cellájának értéke nagyobb, mint 200, akkor automatikusan létrejön egy e-mail. Ez a cikk egy VBA-módszert mutat be a probléma gyors megoldására.

Automatikus e-mail küldése a cella értéke alapján, VBA kóddal


Automatikus e-mail küldése a cella értéke alapján, VBA kóddal

Kérjük, tegye a következőket, ha e-mailt szeretne küldeni az Excel cellasejtje alapján.

1. A munkalapon e-mailt kell küldeni a cellaértéke alapján (itt a D7 cella áll), kattintson a jobb gombbal a lap fülre, majd Kód megtekintése a helyi menüből. Lásd a képernyőképet:

2. A felbukkanóban Microsoft Visual Basic for Applications ablakba, kérjük, másolja és illessze be az alábbi VBA kódot a lapkód ablakba.

VBA kód: E-mail küldése az Outlook segítségével az Excel cellája alapján

Dim xRg As Range
'Update by Extendoffice 2018/3/7
Private Sub Worksheet_Change(ByVal Target As Range)
    On Error Resume Next
    If Target.Cells.Count > 1 Then Exit Sub
  Set xRg = Intersect(Range("D7"), Target)
    If xRg Is Nothing Then Exit Sub
    If IsNumeric(Target.Value) And Target.Value > 200 Then
        Call Mail_small_Text_Outlook
    End If
End Sub
Sub Mail_small_Text_Outlook()
    Dim xOutApp As Object
    Dim xOutMail As Object
    Dim xMailBody As String
    Set xOutApp = CreateObject("Outlook.Application")
    Set xOutMail = xOutApp.CreateItem(0)
    xMailBody = "Hi there" & vbNewLine & vbNewLine & _
              "This is line 1" & vbNewLine & _
              "This is line 2"
    On Error Resume Next
    With xOutMail
        .To = "Email Address"
        .CC = ""
        .BCC = ""
        .Subject = "send by cell value test"
        .Body = xMailBody
        .Display   'or use .Send
    End With
    On Error GoTo 0
    Set xOutMail = Nothing
    Set xOutApp = Nothing
End Sub

Megjegyzések:

1). A VBA kódban D7 és a érték> 200 azok a cellák és cellák értékei, amelyek alapján e-mailt küldeni fog.
2). Kérjük, módosítsa az e-mail törzsét, amire szüksége van xMailBody sor a kódban.
3). Cserélje ki az e-mail címet a címzett e-mail címére a sorban .To = "E-mail cím".
4). És szükség szerint adja meg a Másolat és Titkos másolat címzettjeit .CC = "" és a Titkos másolat = „” szakaszok.
5). Végül módosítsa az e-mail tárgyát a sorban .Subject = "küldés cellateszt-teszt segítségével".

3. megnyomni a más + Q billentyűk együttes bezárásához Microsoft Visual Basic for Applications ablak.

Mostantól, amikor a D7 cellába beírt érték meghaladja a 200 értéket, a rendszer automatikusan létrehoz egy e-mailt a megadott címzettekkel és törzssel az Outlookban. Kattintson a gombra Küldés gombra az e-mail elküldéséhez. Lásd a képernyőképet:

Megjegyzések:

1. A VBA kód csak akkor működik, ha az Outlook programot használja e-mail programként.

2. Ha a D7 cellában megadott adatok szöveges értékek, akkor az e-mail ablak is kiugrik.


Könnyen küldhet e-mailt az Outlook segítségével az Excelben létrehozott levelezőlista mezői alapján:

A Emaileket küld hasznossága Kutools az Excel számára segíti a felhasználókat az Outlook segítségével az Excel létrehozott levelezőlista alapján.
Töltse le és próbálja ki most! (30 napos ingyenes nyomvonal)


Kapcsolódó cikkek:


A legjobb irodai termelékenységi eszközök

A Kutools for Excel megoldja a legtöbb problémát, és 80% -kal növeli a termelékenységet

  • újrafelhasználás: Gyorsan helyezze be összetett képletek, diagramok és bármi, amit korábban használt; Cellák titkosítása jelszóval; Levelezőlista létrehozása és e-maileket küldeni ...
  • Szuper Formula Bár (könnyedén szerkeszthet több szöveget és képletet); Olvasás elrendezés (könnyen olvasható és szerkeszthető nagyszámú cella); Beillesztés a Szűrt tartományba...
  • Cellák / sorok / oszlopok egyesítése az adatok elvesztése nélkül; Osztott cellák tartalma; Kombinálja a duplikált sorokat / oszlopokat... megakadályozza az ismétlődő cellákat; Hasonlítsa össze a tartományokat...
  • Válassza a Másolat vagy az Egyedi lehetőséget Sorok; Válassza az Üres sorok lehetőséget (az összes cella üres); Super Find és Fuzzy Find sok munkafüzetben; Véletlenszerű kiválasztás ...
  • Pontos másolás Több cella a képletreferencia megváltoztatása nélkül; Automatikus referenciák létrehozása több lapra; Helyezze be a golyókat, Jelölőnégyzetek és még sok más ...
  • Kivonat szöveg, Szöveg hozzáadása, Eltávolítás pozíció szerint, Hely eltávolítása; Hozz létre és nyomtasson személyhívó részösszegeket; Konvertálás a cellatartalom és a megjegyzések között...
  • Szuper szűrő (mentse el és alkalmazza a szűrősémákat más lapokra); Haladó rendezés hónap / hét / nap, gyakoriság és egyebek szerint; Speciális szűrő félkövér, dőlt betűvel ...
  • Kombinálja a munkafüzeteket és a munkalapokat; Táblázatok egyesítése kulcsoszlopok alapján; Az adatok felosztása több lapra; Kötegelt konvertálás xls, xlsx és PDF...
  • Több mint 300 hatékony funkció. Támogatja az Office / Excel 2007-2019 és 365. Támogatja az összes nyelvet. Könnyen telepíthető a vállalkozásba vagy szervezetbe. 30 napos ingyenes próbaverzió. 60 napos pénzvisszafizetési garancia.
kte lap 201905

Az Office fül a füles felületet hozza az Office-ba, és sokkal könnyebbé teszi a munkáját

  • Füles szerkesztés és olvasás engedélyezése Wordben, Excelben és PowerPointban, Publisher, Access, Visio és Project.
  • Több dokumentum megnyitása és létrehozása ugyanazon ablak új lapjain, mint új ablakokban.
  • 50% -kal növeli a termelékenységet, és minden nap több száz kattintással csökkenti az egér kattintását!
officetab alja
A megjegyzések rendezése szerint
Hozzászólások (290)
Még nincs értékelés. Legyen Ön az első, aki értékel!
A weboldal moderátora ezt a megjegyzést minimalizálta
Hogyan kell módosítani a kódot, hogy a cellák teljes tartományára vonatkozzon?
A weboldal moderátora ezt a megjegyzést minimalizálta
Kedves Debbie!
Kérjük, próbálja meg az alábbi VBA kódot a probléma megoldásához.

Private Sub Worksheet_Change (ByVal Target mint Range)
Ha Target.Cells.Count > 1, akkor lépjen ki a Sub-ból
Ha (nem metszéspont(cél, tartomány("A1:D4")) semmi) és (célérték > 200) akkor
Hívja a Mail_small_Text_Outlook alkalmazást
Ha véget
End Sub
Sub Mail_small_Text_Outlook()
Dim xOutApp mint objektum
Dim xOutMail mint objektum
Dim xMailBody As String
Set xOutApp = CreateObject("Outlook.Application")
Állítsa be az xOutMail = xOutApp.CreateItem(0)
xMailBody = "Szia" & vbNewLine & vbNewLine & _
"Ez az 1. sor" & vbNewLine & _
"Ez a 2. sor"
On Error Resume Next
Az xOutMail segítségével
.To = "A címzett e-mail címe"
.CC = ""
.BCC = ""
.Subject = "küldés cellateszt-teszt segítségével"
.Body = xMailBody
.Display 'or use .Send
Vége
Hiba történt GoTo 0
Állítsa be az xOutMail = Semmit
Állítsa be az xOutApp = Semmit
End Sub
A weboldal moderátora ezt a megjegyzést minimalizálta
Problémáim vannak a kód megjelenítésével, ha a cellában lévő érték közvetett módon módosul. Például, ha a Sum egyenlet automatikusan módosítja ezt az értéket. Amikor az egyenlet lefut, és az érték a beállított érték fölé megy, hogy felszólítsa az e-mailt, akkor nem teszi ezt meg, kivéve, ha fizikailag magam módosítom a számot. Van mód arra, hogy az e-mail üzenetet akkor is kérje, ha közvetett módon megváltozik?
A weboldal moderátora ezt a megjegyzést minimalizálta
Kedves Jordan!
A következő VBA-kód segíthet a probléma megoldásában. Kérjük, ne felejtse el az „E-mail címet” a címzett e-mail címére cserélni a kódban. Köszönöm.

Private Sub Worksheet_Change (ByVal Target mint Range)
Dim xRgPre As Range
On Error Resume Next
Ha Target.Cells.Count > 1, akkor lépjen ki a Sub-ból
XRg = Tartomány ("D7") beállítása
Állítsa be az xRgPre = xRg.Precedents
Ha xRg.Value > 200 Akkor
Ha Target.Address = xRg.Address Akkor
Hívja a Mail_small_Text_Outlook alkalmazást
ElseIf (Not xRgPre is Nothing) And (Intersect(Target, xRgPre).Address = Target.Address) Then
Hívja a Mail_small_Text_Outlook alkalmazást
Ha véget
Ha véget
End Sub
Sub Mail_small_Text_Outlook()
Dim xOutApp mint objektum
Dim xOutMail mint objektum
Dim xMailBody As String
Set xOutApp = CreateObject("Outlook.Application")
Állítsa be az xOutMail = xOutApp.CreateItem(0)
xMailBody = "Szia" & vbNewLine & vbNewLine & _
"Ez az 1. sor" & vbNewLine & _
"Ez a 2. sor"
On Error Resume Next
Az xOutMail segítségével
.To = "E-mail cím"
.CC = ""
.BCC = ""
.Subject = "küldés cellateszt-teszt segítségével"
.Body = xMailBody
.Display 'or use .Send
Vége
Hiba történt GoTo 0
Állítsa be az xOutMail = Semmit
Állítsa be az xOutApp = Semmit
End Sub
A weboldal moderátora ezt a megjegyzést minimalizálta
Módosítottam a javasolt kódot, hogy megpróbáljam működni az alkalmazásomban.
Megváltozott xRg = Tartomány("C2:C40") és ha xRg.Érték = -1.

Az a probléma, hogy bármikor változás történik bármelyik cellában, és amíg a tartományom egyik cellája = -1, a Mail_small_Text_Outlook függvényt hívja.
Csak akkor próbálok hívni, ha a tartományom bármely cellája közvetve -1-re változik.
Azon is gondolkodtam, hogy lehetséges-e, és hogyan, hogy ez két kritériumnak megfeleljen.
Például ellenőrizze az A és B tartományt, és ha megfelelnek a feltételeknek, hívja meg a funkciót.

Előre is köszönöm a segítséget. Új vagyok ebben az egészben, de ezt a témát végigolvasva körülbelül 90%-ban ott vagyok.


Private Sub Worksheet_Change (ByVal Target mint Range)
Dim xRgPre As Range
On Error Resume Next
Ha Target.Cells.Count > 1, akkor lépjen ki a Sub-ból
xRg beállítása = Tartomány("C2:C40")
Állítsa be az xRgPre = xRg.Precedents
Ha xRg.Value = -1 Akkor
Ha Target.Address = xRg.Address Akkor
Hívja a Mail_small_Text_Outlook alkalmazást
ElseIf (Not xRgPre is Nothing) And (Intersect(Target, xRgPre).Address = Target.Address) Then
Hívja a Mail_small_Text_Outlook alkalmazást
Ha véget
Ha véget
End Sub
A weboldal moderátora ezt a megjegyzést minimalizálta
Ezt a kódot úgy használtam, hogy az egyetlen változtatással egy teljes oszlopra alkalmaztam [Set xRg = Range("D4:D13")]. Mostantól az esemény minden számításkor aktiválódik, függetlenül attól, hogy a D oszlop szelepe a célérték alatt van-e. Valami ötlet, hogy ez miért van?


Dim Xrg As Range
Private Sub Worksheet_Change (ByVal Target mint Range)
Dim xRgPre As Range
On Error Resume Next
Ha Target.Cells.Count > 1, akkor lépjen ki a Sub-ból
Xrg beállítása = Tartomány("D4:D13")
Állítsa be az xRgPre = Xrg.Precedents
Ha Xrg.Value < 1200 Akkor
Ha Target.Address = Xrg.Address Akkor
Hívja a Mail_small_Text_Outlook alkalmazást
ElseIf (Not xRgPre is Nothing) And (Intersect(Target, xRgPre).Address = Target.Address) Then
Hívja a Mail_small_Text_Outlook alkalmazást
Ha véget
Ha véget
End Sub

Sub Mail_small_Text_Outlook()
Dim xOutApp mint objektum
Dim xOutMail mint objektum
Dim xMailBody As String
Set xOutApp = CreateObject("Outlook.Application")
Állítsa be az xOutMail = xOutApp.CreateItem(0)
xMailBody = "Szia" & vbNewLine & _
"Teszt vba" _
& vbNewLine & _
"2. sor."
On Error Resume Next
Az xOutMail segítségével
.To = ""
.CC = ""
.BCC = ""
.Subject = "Automatikus e-mail teszt"
.Body = xMailBody
.Kijelző
Vége
Hiba történt GoTo 0
Állítsa be az xOutMail = Semmit
Állítsa be az xOutApp = Semmit

End Sub


Kösz.
A weboldal moderátora ezt a megjegyzést minimalizálta
Helló

Problémáim vannak, mert az e-mail címzettet újra és újra egyenként hozzá kell adni. Kérjük, tájékozódjon arról, hogy az e-mail címzettek listája hozzáadható-e ehhez a funkcióhoz, így a funkció kiválasztja az e-mail címet a megadott e-mail címek listájából vagy a lista feltöltését, és a funkció elküldi a már összeállított e-mailt a kívánt címzettnek.
A weboldal moderátora ezt a megjegyzést minimalizálta
Kedves Henry!
A következő VBA-kód segíthet a probléma megoldásában. Kérjük, helyezze el a VBA-szkriptet a munkalapmodulba. Ha a megadott cellában lévő érték megfelel a feltételnek, egy Kutools for Excel párbeszédpanel jelenik meg, válassza ki a címzettek e-mail címét tartalmazó cellákat, majd kattintson az OK gombra. Ezután megnyílnak a megadott címzettekkel rendelkező e-mailek. Kérjük, küldje el őket szükség szerint.

Private Sub Worksheet_Change (ByVal Target mint Range)
Ha Target.Cells.Count > 1, akkor lépjen ki a Sub-ból
XRg = Tartomány ("D7") beállítása
Ha xRg = Target And Target.Value > 200 Akkor
Hívja a Mail_small_Text_Outlook alkalmazást
Ha véget
End Sub
Sub Mail_small_Text_Outlook()
Dim xOutApp mint objektum
Dim xOutMail mint objektum
Dim xMailBody As String
Dim xRgMsg As Range
Dim xCell As Range
Set xRgMsg = Application.InputBox("Kérjük, válassza ki a címcellákat:", "Kutools for Excel", , , , , , 8)
xMailBody = "Szia" & vbNewLine & vbNewLine & _
"Ez az 1. sor" & vbNewLine & _
"Ez a 2. sor"
On Error Resume Next
Minden xCell In xRgMsg
Set xOutApp = CreateObject("Outlook.Application")
Állítsa be az xOutMail = xOutApp.CreateItem(0)
Az xOutMail segítségével
.To = xCell.Value
.CC = ""
.BCC = ""
.Subject = "küldés cellateszt-teszt segítségével"
.Body = xMailBody
.Display 'vagy use .Send
Vége
xOutApp = Semmi
xOutMail = Semmi
Következő
Hiba történt GoTo 0
End Sub
A weboldal moderátora ezt a megjegyzést minimalizálta
automatikusan, manuális megszakítás nélkül elküldi-e e-mailben
A weboldal moderátora ezt a megjegyzést minimalizálta
Kedves Brahma!
Ha közvetlenül, megjelenítés nélkül szeretné elküldeni az e-mailt, kérjük, cserélje ki a „.Display” sort „.Send”-re a fenti VBA-kódban.
A weboldal moderátora ezt a megjegyzést minimalizálta
Szia, ugyanazt a szkriptet tettem fel, de nem működik, kérlek segíts az 1. részben

Dim xrg mint tartomány

Private Sub Worksheet_Change (ByVal Target mint Range)
Ha Target.Cells.Count > 1, akkor lépjen ki a Sub-ból
XRg = Tartomány ("D7") beállítása
Ha xRg = Cél És Target.Value = 200 Akkor
Hívja a Mail_small_Text_Outlook alkalmazást
Ha véget

End Sub
A weboldal moderátora ezt a megjegyzést minimalizálta
Kedves bazsalikom,
Van valami figyelmeztetés a kód futtatásakor?
A weboldal moderátora ezt a megjegyzést minimalizálta
Helló! Hogyan módosítanád ezt a kódot annak ellenőrzésére, hogy egy cellacsoportban van-e a "Nincs egyezés" karakterlánc, és hogyan küldhetnél e-mailt, ha van.
A weboldal moderátora ezt a megjegyzést minimalizálta
Kedves Jose!
Kérjük, próbálja meg az alábbi VBA kódot. A kód futtatásakor egy párbeszédpanel jelenik meg, válassza ki azt a tartományt, amelynél a karakterláncot ellenőrizni fogja, majd kattintson az OK gombra. ha a karakterlánc nem létezik, akkor megjelenik egy párbeszédpanel. Ha a karakterlánc szerepel a tartományban, egy e-mail jelenik meg a megadott címzettel, tárggyal és törzstel.

Sub SendEmail()
Dim I As Long
Dim J As Long
Dim xrg mint tartomány
Dim xArr
Dim xOutApp mint objektum
Dim xOutMail mint objektum
Dim xMailBody As String
Dim xFlag Boolean-ként
On Error Resume Next
Set xRg = Application.InputBox("Kérjük válasszon tartományt", "Kutools for Excel", Selection.Address, , , , , 8)
Ha az xRg semmi, akkor lépjen ki a Subból
xArr = xRg.Value
xFlag = Hamis
Ha I = 1 - UBound(xArr)
Ha J = 1 - UBound(xArr, 2)
Ha xArr(I, J) = "Nincs egyezés" Akkor
xFlag = Igaz
Ha véget
Következő
Következő
Ha xFlag Akkor
Set xOutApp = CreateObject("Outlook.Application")
Állítsa be az xOutMail = xOutApp.CreateItem(0)
xMailBody = "Szia" & vbNewLine & vbNewLine & _
"Ez az 1. sor" & vbNewLine & _
"Ez a 2. sor"
Az xOutMail segítségével
.To = "E-mail cím"
.CC = ""
.BCC = ""
.Subject = "Egyezés"
.Body = xMailBody
.Display 'vagy use .Send
Vége
Más
MsgBox "Nem található egyező érték", vbInformation, "KuTools for Excel"
Ha véget
End Sub
A weboldal moderátora ezt a megjegyzést minimalizálta
Hogyan módosíthatnám ezt a kódot a tanulói osztályzatok szülőknek történő elküldéséhez? Ahol, ha az A oszlop az osztályzat, a B oszlop pedig a szülő e-mail-cím. Szeretnék minden tanuló számára egy e-mailt feltölteni F osztályzattal.
A weboldal moderátora ezt a megjegyzést minimalizálta
Kedves Frank!
Az alábbi VBA-kód segíthet a probléma megoldásában. Köszönöm.

Sub Mail_small_Text_Outlook()
Dim xrg mint tartomány
Dim I As Long
Dim xRows As Long
Dim xVal As String
Dim xOutApp mint objektum
Dim xOutMail mint objektum
Dim xMailBody As String
On Error Resume Next
Set xRg = Application.InputBox("Kérjük, válassza ki az osztályzat oszlopot és az e-mail oszlopot (két oszlop)", "Kutools for Excel", Selection.Address, , , , , 8)
Ha az xRg semmi, akkor lépjen ki a Subból
xRows = xRg.Rows.Count
Állítsa be az xRg = xRg(2)
Ha I = 1 - xRows
xVal = xRg.Eltolás(I, -1).Szöveg
Ha xVal = "F" Akkor
Set xOutApp = CreateObject("Outlook.Application")
Állítsa be az xOutMail = xOutApp.CreateItem(0)
xMailBody = "Szia" & vbNewLine & vbNewLine & _
"Ez a gyermeked osztályzata" & xRg.Eltolás(I, -1).Szöveg
Az xOutMail segítségével
.to = xRg.Eltolás(I, 0).Szöveg
.Subject = "küldés cellateszt-teszt segítségével"
.Body = xMailBody
.Display 'or use .Send
Vége
Hiba történt GoTo 0
Állítsa be az xOutMail = Semmit
Állítsa be az xOutApp = Semmit
Ha véget
Következő
End Sub
A weboldal moderátora ezt a megjegyzést minimalizálta
Már van egy excel fájlban az e-mail címek listája, hogyan tudom módosítani a kódot, hogy automatikusan válassza ki az illető email címét, ha a D7 cellája >200?
A weboldal moderátora ezt a megjegyzést minimalizálta
Good Day,
A következő VBA-kód segíthet a probléma megoldásában. Kérjük, helyezze el a VBA-szkriptet a munkalapmodulba. Ha a megadott cellában lévő érték megfelel a feltételnek, egy Kutools for Excel párbeszédpanel jelenik meg, válassza ki a címzettek e-mail címét tartalmazó cellákat, majd kattintson az OK gombra. Ezután megnyílnak a megadott címzettekkel rendelkező e-mailek. Kérjük, küldje el őket szükség szerint.

Private Sub Worksheet_Change (ByVal Target mint Range)
Ha Target.Cells.Count > 1, akkor lépjen ki a Sub-ból
XRg = Tartomány ("D7") beállítása
Ha xRg = Target And Target.Value > 200 Akkor
Hívja a Mail_small_Text_Outlook alkalmazást
Ha véget
End Sub
Sub Mail_small_Text_Outlook()
Dim xOutApp mint objektum
Dim xOutMail mint objektum
Dim xMailBody As String
Dim xRgMsg As Range
Dim xCell As Range
Set xRgMsg = Application.InputBox("Kérjük, válassza ki a címcellákat:", "Kutools for Excel", , , , , , 8)
xMailBody = "Szia" & vbNewLine & vbNewLine & _
"Ez az 1. sor" & vbNewLine & _
"Ez a 2. sor"
On Error Resume Next
Minden xCell In xRgMsg
Set xOutApp = CreateObject("Outlook.Application")
Állítsa be az xOutMail = xOutApp.CreateItem(0)
Az xOutMail segítségével
.To = xCell.Value
.CC = ""
.BCC = ""
.Subject = "küldés cellateszt-teszt segítségével"
.Body = xMailBody
.Display 'vagy use .Send
Vége
xOutApp = Semmi
xOutMail = Semmi
Következő
Hiba történt GoTo 0
End Sub
A weboldal moderátora ezt a megjegyzést minimalizálta
Problémáim vannak a levelek küldésével az Outlookon keresztül. A következő hibaüzenetet kapom: "Egy program e-mailt próbál küldeni az Ön nevében. Ha ez váratlan, kérjük, tagadja meg, és ellenőrizze, hogy víruskereső szoftvere naprakész-e."
Kérlek segítsetek, mert nem tudom automatizálni.
A weboldal moderátora ezt a megjegyzést minimalizálta
Bocs Mayank,
A kód jól működik az én esetemben. Úgy tűnik, hogy az Outlookban be van állítva valami a "küldés nevében" funkcióval kapcsolatban. Nyugodtan ellenőrizze.
A weboldal moderátora ezt a megjegyzést minimalizálta
Szia, milyen kódot használnék, ha e-mailt próbálok küldeni egy menedzsernek, akinek van egy listája azokról a gyümölcsökről, amelyek mennyisége > 200 havonta egyszer (az Ön példája alapján), vagy hamarosan lejár (dátumok alapján)
A weboldal moderátora ezt a megjegyzést minimalizálta
Good Day
Lehet, hogy ez a módszer ebben a cikkben: "Hogyan küldhetek e-mailt, ha az Excelben betartották a határidőt?" segíthet neked.
Kérjük, kövesse ezt a linket: https://www.extendoffice.com/documents/excel/4664-excel-send-email-if-due-date-has-been-met.html
A weboldal moderátora ezt a megjegyzést minimalizálta
Hogyan szerkeszthetem a kódot, hogy e-mailt küldjön a cellában lévő dátum alapján. Például szükségem van egy dokumentumra, amelyet 15 havonta felül kell vizsgálni, és 12 hónapos korban szeretnék egy e-mailt küldeni egy e-mail-címre, amely szerint a dokumentumot felül kell vizsgálni. Megkaptam, hogy automatikusan küldjek egy e-mailt a .Display .Send értékre változtatva, és remekül működik, ahogy meg van írva, de mit kell módosítanom, hogy egész szám helyett dátumfüggvényt használjak?
A weboldal moderátora ezt a megjegyzést minimalizálta
Hogyan adhat hozzá több tartományt a "Set xRg = Range("D7")"-hez. Szeretném szerkeszteni, és hozzáadni a Tartományt ("D7:F7"). Azonban hibaüzenetet kapok: Run Time Error 13, Type Mismatch, és ez a következőhöz vezet: If xRg = Target And Target.Value > 2 then.


Hogyan tudom megoldani ezt a problémát?
A weboldal moderátora ezt a megjegyzést minimalizálta
Good Day,
Kérjük, próbálja meg az alábbi VBA kódot a probléma megoldásához.

Private Sub Worksheet_Change (ByVal Target mint Range)
Ha Target.Cells.Count > 1, akkor lépjen ki a Sub-ból
Ha (nem metszéspont(cél, tartomány("D7:F7")) semmi) és (célérték > 200) akkor
Hívja a Mail_small_Text_Outlook alkalmazást
Ha véget
End Sub
Sub Mail_small_Text_Outlook()
Dim xOutApp mint objektum
Dim xOutMail mint objektum
Dim xMailBody As String
Set xOutApp = CreateObject("Outlook.Application")
Állítsa be az xOutMail = xOutApp.CreateItem(0)
xMailBody = "Szia" & vbNewLine & vbNewLine & _
"Ez az 1. sor" & vbNewLine & _
"Ez a 2. sor"
On Error Resume Next
Az xOutMail segítségével
.To = "A címzett e-mail címe"
.CC = ""
.BCC = ""
.Subject = "küldés cellateszt-teszt segítségével"
.Body = xMailBody
.Display 'vagy use .Send
Vége
Hiba történt GoTo 0
Állítsa be az xOutMail = Semmit
Állítsa be az xOutApp = Semmit
End Sub
A weboldal moderátora ezt a megjegyzést minimalizálta
tökéletesen működött.. Köszönöm..:):)
A weboldal moderátora ezt a megjegyzést minimalizálta
Nálam nem működik, mivel a D7-ben lévő érték egy képlet eredménye. Mi van, ha a D7 cella képletet tartalmaz, pl. D7 =2*120? Még mindig megfelel a feltételnek, de nem történik semmi. Kérem, segítsen
A weboldal moderátora ezt a megjegyzést minimalizálta
hogyan lehet leállítani a kód futását, azaz ne kérje az e-mailt, ha a feltétel nem teljesül?

Még akkor is, ha D7 < 200, akkor is kérik az e-mailt.
A weboldal moderátora ezt a megjegyzést minimalizálta
Good Day,
A kód frissül a bejegyzésben a probléma megoldva. Köszönjük észrevételét.
A weboldal moderátora ezt a megjegyzést minimalizálta
Hi

Nagyon köszönjük, hogy közzétette ezt a VBA-kódot és az utasításokat. Amikor megtaláltam, úgy éreztem, megnyertem a lottón. Azonban valamiben elakadtam, ezért remélem, hogy tud segíteni (új vagyok a VBA-ban, csak nagyon alapvető ismeretekkel rendelkezem).

Kimásoltam a kódot, és megváltoztattam a cellát és a cellaértéket, hogy egy tartományból válasszak, ha a feltételek teljesülnek. Kipróbáltam és teszteltem, és működik, és kaptam egy e-mailt az outlook számára a kritériumok alapján.

1) Úgy tűnik azonban, hogy nem tudok rájönni, hogyan érhetem el, hogy a VBA-kód automatikusan fusson, amikor megnyitom az Excel munkalapot, ahelyett, hogy a VBA-alkalmazásra kell kattintanom, és a Futtatás parancsot választanom. Tudna-e tanácsot adni, hogy van-e további felszólítás a fenti VBA-kódba való beírásra, amely ezt megteszi, vagy külön kell megtenni.

2) Van-e mód arra is, hogy a VBA-kódot lekérje, hogy e-mailt küldjön egy személynek, ha az esedékesség dátuma igen, az alábbi példában látható módon.
e-mail rejtett oszlop
Név

Eljárás
1. eljárás esedékessége igen
számú eljárás 2 esedékesség sz

A táblázatban sok ember szerepelne (egy sorban vízszintesen átmenve), és az „Igen” kiemelhető különféle késedelmes eljárások esetén (függőlegesen felsorolva az A oszlopban. Van mód olyan VBA-kód létrehozására, amely ilyesmire fut?) ha "Igen" az "1. személy"-nél, akkor az "1. személy" e-mailben írja be az "eljárás nem #"-et (vagy számokat) és a határidőt.

Nem bánnám, ha minden egyes személyhez külön VBA-kódot kellene beállítanom, mindaddig, amíg elküldi e-mailben az adott személy összes lejárt dokumentumát és a határidőket.

Remélem tud segíteni
A weboldal moderátora ezt a megjegyzést minimalizálta
Kedves Anna,
Kérjük, próbálja ki az alábbi VBA kódot. Köszönjük észrevételét.

Sub Mail_small_Text_Outlook()
Dim xrg mint tartomány
Dim xCell As Range
Dim I As Long
Dim xRows As Long
Dim xCols As Long
Dim xVal As String
Dim xOutApp mint objektum
Dim xOutMail mint objektum
Dim xMailBody As String
On Error Resume Next
Set xRg = Application.InputBox("Válassza ki azt a cellaértéket tartalmazó tartományt, amely alapján e-maileket küldeni fog:", "Kutools for Excel", Selection.Address, , , , , 8)
Ha az xRg semmi, akkor lépjen ki a Subból
xRows = xRg.Rows.Count
xCols = xRg.Columns.Count
Ha I = 1 - xRows
xCell = xRg(I, xCols) beállítása
Ha xCell.Value = "Igen" Akkor
Set xOutApp = CreateObject("Outlook.Application")
Állítsa be az xOutMail = xOutApp.CreateItem(0)
xMailBody = "Szia" & vbNewLine & vbNewLine & _
"Ez az Ön információja: " & vbNewLine & xCell.Offset(0, -1).Szöveg & vbNewLine & xCell.Offset(0, -2).Szöveg
Az xOutMail segítségével
.To = xCell.Eltolás(0, -4).Szöveg
.Subject = "küldés cellateszt-teszt segítségével"
.Body = xMailBody
.Display 'vagy use .Send
Vége
Hiba történt GoTo 0
Állítsa be az xOutMail = Semmit
Állítsa be az xOutApp = Semmit
Ha véget
Következő
End Sub
A weboldal moderátora ezt a megjegyzést minimalizálta
Kristály,

Ez a következő kódot váltja fel:

Al email()

Dim xrg mint tartomány

Dim xRgEach As Range

Dim xEmail_Subject, xEmail_Send_Form,;stb.
A weboldal moderátora ezt a megjegyzést minimalizálta
Pontosan hova írjuk be ezt a kódot?
A weboldal moderátora ezt a megjegyzést minimalizálta
Jó napot,
A kódot el kell helyeznie a munkalap kódablakába.
Nyissa meg a Microsoft Visual Basic for Applications ablakot, majd kattintson duplán a lap nevére a bal oldali ablaktáblában a kódszerkesztő megnyitásához.
A weboldal moderátora ezt a megjegyzést minimalizálta
Szia,


Jelenleg egy kis problémám van a kódolással (újdonság ebben - lehet, hogy többet harapott el, mint amennyit meg tudok rágni)


Jelenleg van egy táblázatom a következőkkel, és segítségre van szükségem a vállalkozásunk ingatlanjainkon található hiba miatti automatizáláshoz és e-mailek küldéséhez


Jelenleg szükségem van egy kódra, amely a következő adatokat használja:


1) Egy cím és a probléma ( 2 "általános" cella, amelyek a következővel egyesültek: ((A D1 cellában)) " = =CONCAT(B1," "C1,) "
A B1-ben lévő cím mindig ugyanaz (többé-kevésbé)
Míg a C1 mindig változik az ingatlan hibájától függően.


2) Egy e-mailt, amelyet ugyanazon az e-mail címen kell küldeni (használhatok-e például $E$1-t, vagy kell az E1-E1-et használnom), vagy egyszerűen beírhatom a "TheEmailAdress@.co.uk" kódot a kódsorba


3) A kitöltendő e-mail törzse az 1. ponthoz hasonlóan) ...... ((F1 cellában)) " =CONCAT(G1," ",H1)
Ezek folyamatosan változni fognak, mivel képviselik a céget (G1) és azt, amit csinálnak, javítanak, idéznek stb. (H1)

4) Az e-mail elküldésének kiváltója, én lennék a 7-es, a lap naponta frissül (hetente 7 napon)
mint ilyen, szükségem van a triggerre az e-mail elküldéséhez a 7. napon, de nem állandóan, mint a 8., 9., 10+ stb. napon. és nem előbb, mint például 1-6, ez A4-ben lenne: A 100+ (mivel folyamatosan bővítjük


4) Használtam apró részleteket más felhasználóktól, akik megemlítették egy lista használatát az e-mail elküldéséhez, de nem vagyok benne biztos, hogy 100%-ban helyes volt-e, de szükségem van rá, hogy beolvassam, bár az összes Collum A... A4: A100
és ha 47 cella csak "7"-et tartalmaz, akkor 47 e-mail kerül elküldésre


Nagyon köszönöm, hogy elolvastad, és remélem tudtok segíteni :)
A weboldal moderátora ezt a megjegyzést minimalizálta
Kedves Martyn!
Sajnos ebben nem tudok segíteni.
Kérdését felteheti fórumunkba: https://www.extendoffice.com/forum.html hogy további Excel-támogatást kapjunk műszaki munkatársainktól.
Köszönöm a megjegyzését.

Üdvözlettel,
Kristály
A weboldal moderátora ezt a megjegyzést minimalizálta
Szia,


Mi a teendő, ha az L oszlopban szereplő „befejezett” szó alapján szeretném elküldeni az e-mailt?
A weboldal moderátora ezt a megjegyzést minimalizálta
Kedves Jesse!
A következő VBA-kód segíthet a probléma megoldásában. Köszönjük észrevételét.

Private Sub Worksheet_Change (ByVal Target mint Range)
Ha Target.Cells.Count > 1, akkor lépjen ki a Sub-ból
Ha a (Nem metszéspont(cél, tartomány("L:L")) semmi) És (Cél.Érték = "befejezve") akkor
Hívja a Mail_small_Text_Outlook alkalmazást
Ha véget
End Sub
Sub Mail_small_Text_Outlook()
Dim xOutApp mint objektum
Dim xOutMail mint objektum
Dim xMailBody As String
Set xOutApp = CreateObject("Outlook.Application")
Állítsa be az xOutMail = xOutApp.CreateItem(0)
xMailBody = "Szia" & vbNewLine & vbNewLine & _
"Ez az 1. sor" & vbNewLine & _
"Ez a 2. sor"
On Error Resume Next
Az xOutMail segítségével
.To = "A címzett e-mail címe"
.CC = ""
.BCC = ""
.Subject = "küldés cellateszt-teszt segítségével"
.Body = xMailBody
.Display 'vagy use .Send
Vége
Hiba történt GoTo 0
Állítsa be az xOutMail = Semmit
Állítsa be az xOutApp = Semmit
End Sub
A weboldal moderátora ezt a megjegyzést minimalizálta
Szia,
Azt szeretném, ha az Outlook csak akkor jelenik meg, ha a tartományba ("D7:F7") beillesztett adatokban legalább 1 nulla vagy üres.
Eltávolítottam az "If Target.Cells.Count > 1 then Exit Sub" sort, és most az Outlook mindig elindul, ha bármely értékcsoportot beillesztek a D7:F7 cellákba.

Segítség.
A weboldal moderátora ezt a megjegyzést minimalizálta
Kedves Jan!
A következő szkript segíthet a probléma megoldásában. Köszönjük észrevételét.

Private Sub Worksheet_Change (ByVal Target mint Range)
Dim xOutApp mint objektum
Dim xOutMail mint objektum
Dim xMailBody As String
On Error Resume Next
Ha Target.Address = Tartomány("D7:F7").Cím Akkor
Az Application.WorksheetFunction funkcióval
Ha .CountIf(Target, "") > 0 Vagy .CountIf(Target, 0) > 0 Akkor
Set xOutApp = CreateObject("Outlook.Application")
Állítsa be az xOutMail = xOutApp.CreateItem(0)
Az xOutMail segítségével
.To = "E-mail cím"
.CC = ""
.BCC = ""
.Subject = "küldés cellateszt-teszt segítségével"
.Body = "Sziasztok!"
.Display 'vagy use .Send
Vége
Hiba történt GoTo 0
Állítsa be az xOutMail = Semmit
Állítsa be az xOutApp = Semmit
Ha véget
Vége
Ha véget
End Sub
A weboldal moderátora ezt a megjegyzést minimalizálta
Ezért a szerkesztésedet arra használtam, hogy beépítsek egy cellatartományt, de (ha a munkalap példáját használjuk) azon tűnődtem, hogyan adhatom hozzá a gyümölcs típusát, a dátumot és a mennyiséget a munkalap HTML e-mailjéhez, ha megfelelnek a feltételeknek. generált egy e-mailt. Így szólna

"Szia,"

Gyümölcs neve a cellából "Hátsó rendelésre kell feltenni, mert a rendelés dátuma szerint: " rendelés dátuma cellából "van ilyen mennyiségünk:" mennyiség a cellából.
A weboldal moderátora ezt a megjegyzést minimalizálta
Szia Noémi
Kérjük, próbálja ki ezt a VBA-szkriptet.

Private Sub Worksheet_Change (ByVal Target mint Range)
Dim xrg mint tartomány
Dim I, J, K As Long
Dim xOutApp mint objektum
Dim xOutMail mint objektum
Dim xMailBody As String
On Error Resume Next
Ha Target.Address = Tartomány("D7").Cím Akkor
Az Application.WorksheetFunction funkcióval
Ha IsNumeric(Cél.Érték) és Target.Value > 200 Akkor
Set xRg = Application.InputBox("Kérjük, válassza ki a levéltörzsben megjelenítendő cellatartományt:", "KuTools for Excel", Selection.Address, , , , , 8)
Ha az xRg semmi, akkor lépjen ki a Subból
Ha I = 1 – xRg.Rows.Count
Ha J = 1 - xRg.Rows(I).Columns.Count
Ha K = 1 - xRg.Rows(I).Columns(J).Count
xMailBody = xMailBody & " " & xRg.Rows(I).Columns(J).Cells(K).Text
Következő
Következő
xMailBody = xMailBody & vbNewLine
Következő
Set xOutApp = CreateObject("Outlook.Application")
Állítsa be az xOutMail = xOutApp.CreateItem(0)
Az xOutMail segítségével
.To = "E-mail cím"
.CC = ""
.BCC = ""
.Subject = "küldés cellateszt-teszt segítségével"
.Body = "Szia" & vbNewLine & xMailBody
.Display 'vagy use .Send
Vége
Hiba történt GoTo 0
Állítsa be az xOutMail = Semmit
Állítsa be az xOutApp = Semmit
Ha véget
Vége
Ha véget
End Sub
A weboldal moderátora ezt a megjegyzést minimalizálta
szia kristály
köszönjük a kódokat, ha lehetséges, kérjük, küldje el a kódokat az alábbi részletekért

ha 8-9 coloummal rendelkezik különböző lejárati idők, mint az útlevél lejárati dátuma, a jogosítvány lejárati dátuma, a gépjármű regisztráció lejárati dátuma, a kapubérlet lejárati dátuma stb., és a postai figyelmeztetést csak 5 megadott személynek kell elküldeni.

mint a dátumlapunk több mint 300 alkalmazottat foglalkoztat, a lejárt és a lejárati dátum 15 napon belül piros színnel és e-mail értesítést kell küldeni.

szíveskedjen megtenni a szükségeset

thanks in advance
A weboldal moderátora ezt a megjegyzést minimalizálta
Helló,
Közzétettünk egy cikket "Hogyan küldhetek e-mailt, ha az Excelben lejárt a határidő?"
Ebben a cikkben láthatja, hogy vannak-e válaszok. A cikk megnyitásához kövesse ezt a linket: https://www.extendoffice.com/documents/excel/4664-excel-send-email-if-due-date-has-been-met.html
Köszönöm.
A weboldal moderátora ezt a megjegyzést minimalizálta
Hello! Ha egy listáról szeretnék e-mailt küldeni, ahelyett, hogy tényleges e-mail addy-t írnék be a kódba, lehetséges ez? Kösz
A weboldal moderátora ezt a megjegyzést minimalizálta
Helló,
Kérjük, próbálja meg a VBA kód alatt, amikor a megadott cella megfelel a feltételnek, felugrik egy párbeszédablak, válassza ki azt a cellát, amelyre az e-mail címet tartalmazza. Remélem tud segíteni. Köszönöm.

Private Sub Worksheet_Change (ByVal Target mint Range)
Ha Target.Cells.Count > 1, akkor lépjen ki a Sub-ból
XRg = Tartomány ("D7") beállítása
Ha xRg = Target And Target.Value > 200 Akkor
Hívja a Mail_small_Text_Outlook alkalmazást
Ha véget
End Sub
Sub Mail_small_Text_Outlook()
Dim xOutApp mint objektum
Dim xOutMail mint objektum
Dim xMailBody As String
Dim xRgMsg As Range
Dim xCell As Range
Set xRgMsg = Application.InputBox("Kérjük, válassza ki a címcellákat:", "Kutools for Excel", , , , , , 8)
xMailBody = "Szia" & vbNewLine & vbNewLine & _
"Ez az 1. sor" & vbNewLine & _
"Ez a 2. sor"
On Error Resume Next
Minden xCell In xRgMsg
Set xOutApp = CreateObject("Outlook.Application")
Állítsa be az xOutMail = xOutApp.CreateItem(0)
Az xOutMail segítségével
.To = xCell.Value
.CC = ""
.BCC = ""
.Subject = "küldés cellateszt-teszt segítségével"
.Body = xMailBody
.Display 'vagy use .Send
Vége
xOutApp = Semmi
xOutMail = Semmi
Következő
Hiba történt GoTo 0
End Sub
Még senki sem írt megjegyzést
Több ingatlan
Hagyja meg észrevételeit
Feladás vendégként
×
Értékeld ezt a bejegyzést:
0   Karakterek
Javasolt helyek