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

Ինչպե՞ս նամակ ուղարկել, եթե Excel- ում որոշակի բջիջ է փոփոխվել:

Այս հոդվածը խոսում է Outlook-ի միջոցով նամակ ուղարկելու մասին, երբ Excel-ում որոշակի տիրույթի բջիջը փոփոխվում է:

Ուղարկեք էլ. Նամակ, եթե որոշակի տիրույթի բջիջը փոփոխված է VBA կոդով


Ուղարկեք էլ. Նամակ, եթե որոշակի տիրույթի բջիջը փոփոխված է VBA կոդով

Եթե ​​Ձեզ անհրաժեշտ է ավտոմատ կերպով ստեղծել նոր էլ.

1. Աշխատաթերթում, որը դուք պետք է ուղարկեք էլ.փոստ `որոշակի փոփոխականության մեջ գտնվող իր փոփոխված բջիջի հիման վրա, աջով կտտացրեք թերթիկի ներդիրին և այնուհետև Դիտել կոդը համատեքստային ընտրացանկից: Տեսեք,

2. Պատուհանման մեջ Microsoft Visual Basic հավելվածների համար պատուհանը, խնդրում ենք պատճենել և տեղադրեք ներքևում գտնվող VBA կոդի ծածկագիր կոդի պատուհանում:

VBA կոդ. Նամակ ուղարկեք, եթե նշված տիրույթում գտնվող բջիջը փոփոխված է Excel- ում

Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 2017/9/12
    Dim xRgSel As Range
    Dim xOutApp As Object
    Dim xMailItem As Object
    Dim xMailBody As String
    On Error Resume Next
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Set xRg = Range("A2:E11")
    Set xRgSel = Intersect(Target, xRg)
    ActiveWorkbook.Save
    If Not xRgSel Is Nothing Then
        Set xOutApp = CreateObject("Outlook.Application")
        Set xMailItem = xOutApp.CreateItem(0)
        xMailBody = "Cell(s) " & xRgSel.Address(False, False) & _
            " in the worksheet '" & Me.Name & "' were modified on " & _
            Format$(Now, "mm/dd/yyyy") & " at " & Format$(Now, "hh:mm:ss") & _
            " by " & Environ$("username") & "."

        With xMailItem
            .To = "Email Address"
            .Subject = "Worksheet modified in " & ThisWorkbook.FullName
            .Body = xMailBody
            .Attachments.Add (ThisWorkbook.FullName)
            .Display
        End With
        Set xRgSel = Nothing
        Set xOutApp = Nothing
        Set xMailItem = Nothing
    End If
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
End Sub

Notes:

1) Կոդում, A2: E11 այն միջակայքն է, որի հիման վրա էլփոստ կուղարկեք:
2) Խնդրում ենք փոխել էլփոստի մարմինը, ինչպես ձեզ հարկավոր է xMailBody տող ծածկագրում:
3) Փոխարինեք Էլեկտրոնային հասցե ստացողի էլ. փոստի հասցեին համապատասխան . To = "Էլ. Փոստի հասցե".
4) Փոխեք էլփոստի թեման տողում .Subject = "Աշխատաթերթը փոփոխված է" և ThisWorkbook.FullName.

3. Սեղմեք ալտ + Q ստեղները միաժամանակ փակելու համար Microsoft Visual Basic հավելվածների համար պատուհան.

Այսուհետ, A2: E11 տիրույթում գտնվող ցանկացած բջիջ փոփոխվում է, նոր էլփոստ կստեղծվի թարմացված աշխատանքային գրքի հետ միասին: Եվ բոլոր նշված դաշտերը, ինչպիսիք են առարկան, ստացողը և էլփոստի մարմինը, նշված կլինեն էլ. Փոստում: Խնդրում ենք ուղարկել էլ.

ՆշումVBA կոդը աշխատում է միայն այն դեպքում, եթե դուք օգտագործում եք Outlook-ը որպես ձեր էլփոստի ծրագիր:


Առնչվող հոդվածներ քանակը:


Գրասենյակի արտադրողականության լավագույն գործիքները

Excel-ի համար Kutools-ը լուծում է ձեր խնդիրների մեծ մասը և բարձրացնում ձեր արտադրողականությունը 80%-ով

  • Վերաօգտագործել: Արագ տեղադրեք բարդ բանաձևեր, գծապատկերներ և այն ամենը, ինչ դուք նախկինում օգտագործել եք. Ryածկագրել բջիջները գաղտնաբառով; Ստեղծեք փոստային ցուցակ և նամակներ ուղարկել ...
  • Super Formula Bar (հեշտությամբ խմբագրեք տեքստի և բանաձևի բազմաթիվ տողեր); Ընթերցանության դասավորությունը (հեշտությամբ կարդալ և խմբագրել մեծ թվով բջիջներ); Տեղադրել ֆիլտրացված տիրույթում...
  • Միաձուլել բջիջները / տողերը / սյունակները առանց տվյալների կորստի. Պառակտված բջիջների պարունակությունը; Միավորել կրկնօրինակ տողերը / սյունակները... Կանխել կրկնօրինակ բջիջները; Համեմատեք միջակայքերը...
  • Ընտրեք Կրկնօրինակ կամ Եզակի Շարքեր; Ընտրեք դատարկ շարքեր (բոլոր բջիջները դատարկ են); Super Find և Fuzzy Find շատ աշխատանքային գրքույկներում; Պատահական ընտրություն ...
  • Actշգրիտ պատճեն Բազմաթիվ բջիջներ ՝ առանց բանաձևի հղումը փոխելու; Ավտոմատ ստեղծեք հղումներ դեպի մի քանի թերթեր; Տեղադրեք փամփուշտներ, Տուփեր և ավելին ...
  • Քաղվածք տեքստ, Տեքստ ավելացնել, հեռացնել ըստ դիրքի, Հեռացնել տարածությունը; Ստեղծել և տպել էջային ենթագոտիներ; Փոխարկել բջիջների բովանդակության և մեկնաբանությունների միջև...
  • Սուպեր զտիչ (պահպանել և կիրառել ֆիլտրի սխեմաները այլ թերթերի վրա); Ընդլայնված տեսակավորում ըստ ամիս / շաբաթ / օր, հաճախականություն և ավելին; Հատուկ զտիչ համարձակ, շեղատառով ...
  • Միավորել աշխատանքային տետրերը և աշխատանքային թերթերը; Միավորել աղյուսակները ՝ հիմնված հիմնական սյունակների վրա; Տվյալները բաժանեք մի քանի թերթերի; Խմբաքանակի փոխակերպում xls, xlsx և PDF...
  • Ավելի քան 300 հզոր հատկություններ. Աջակցում է Office / Excel 2007-2021 և 365: Աջակցում է բոլոր լեզուներին: Հեշտ տեղակայում ձեր ձեռնարկությունում կամ կազմակերպությունում: Ամբողջական հնարավորություններ 30-օրյա անվճար փորձարկում: 60-օրյա գումարի վերադարձի երաշխիք:
kte էջանիշը 201905

Office Tab- ը Tabbed ինտերֆեյսը բերում է Office, և ձեր աշխատանքը շատ ավելի դյուրին դարձրեք

  • Միացնել ներդիրներով խմբագրումը և ընթերցումը Word, Excel, PowerPoint- ով, Հրատարակիչ, Access, Visio և Project:
  • Բացեք և ստեղծեք բազմաթիվ փաստաթղթեր նույն պատուհանի նոր ներդիրներում, այլ ոչ թե նոր պատուհաններում:
  • Բարձրացնում է ձեր արտադրողականությունը 50%-ով և նվազեցնում մկնիկի հարյուրավոր սեղմումները ձեզ համար ամեն օր:
officetab ներքևում
Տեսակավորել մեկնաբանությունները ըստ
մեկնաբանություններ (37)
Դեռևս գնահատականներ չկան: Եղիր առաջինը, ով կգնահատի:
Այս մեկնաբանությունը կայքի վարողի կողմից նվազագույնի է հասցվել
Ես խրված եմ VB կոդի տակ: Ես փորձում եմ էլեկտրոնային փոստով ծանուցում ստանալ այն օգտվողին, որտեղ տվյալները փոխվել են: Էլեկտրոնային փոստն աշխատում է, բայց երբ ես կատարում եմ որևէ փոփոխություն, էլփոստը սկսում է միանգամից, բայց ես ուզում եմ էլ. Նաև սա պետք է աշխատի Excel-ի ամբողջ աշխատանքային գրքույկի ցանկացած թերթիկի համար:

Խնդրում ենք օգնել...

Մասնավոր ենթագիրք_BeforeSave (ByVal SaveAsUI որպես բուլյան, չեղարկել որպես բուլյան)

'****Օբյեկտների և փոփոխականների հայտարարագրում*******

Dim xRgSel որպես տիրույթ Dim xOutApp որպես օբյեկտ Dim xMailItem որպես օբյեկտ Dim xMailBody որպես տող Dim mailTo as string

Ս.թ. սխալի Ռեզյումե Next

Թերթեր ("TargetSheet"). Range ("TargetRange"). Ընտրեք

Application.ScreenUpdating = False Application.DisplayAlerts = False

'Set xRg = Range("A" & Rows.Count).End(xlUp).Տող

Սահմանել xRg = միջակայք («A2:DA1000»)
Սահմանել xRgSel = Խաչմերուկ (Թիրախ, xRg)


ActiveWorkbook.Save
'************Outlook հավելվածի բացում************

Եթե ​​ոչ xRgSel-ը ոչինչ է, ապա

Սահմանեք xOutApp = CreateObject («Outlook.Application»)
Սահմանել xMailItem = xOutApp.CreateItem(0)

xMailBody = «Բջջ(ներ)» & xRgSel.Address(False, False) & _
" աշխատաթերթում '" & Me.Name & "' փոփոխվել են " & _-ում
Format$(Այժմ՝ «մմ/dd/yyyy») & « at « & Format$ (Այժմ՝ «hh:mm:ss») & _
" ըստ " & Environ$("username") & "."
«************Գտնում եմ ստացողների ցուցակը************

If Cells(xRgSel.Row, "A").Value = "Pankaj" Այնուհետեւ

mailTo = "pank12***@gmail.com"

Վերջ: Եթե

If Cells(xRgSel.Row, «A»).Value = «Nitin» Այնուհետեւ

mailTo = "pank****@gmail.com"

Վերջ: Եթե

If Cells(xRgSel.Row, "A").Value = "Chandan" Այնուհետեւ

mailTo = "pakxro**@gmail.com"

Վերջ: Եթե
'****************Էլ.

xMailItem-ի հետ

.To = mailTo
.Subject = "Աշխատաթերթը փոփոխված է" և ThisWorkbook.FullName
.Body = xMailBody
'.Attachments.Add (This Workbook.FullName)
.Dուցադրել

Վերջ

Սահմանել xRgSel = Ոչինչ
Սահմանել xOutApp = Ոչինչ
Սահմանել xMailItem = Ոչինչ

Վերջ: Եթե

Application.DisplayAlerts = Ճիշտ է
Դիմում. ScreenUpdating = ueիշտ է
Վերջ Sub
Այս մեկնաբանությունը կայքի վարողի կողմից նվազագույնի է հասցվել
Հարգելի Պանկաջ Շուկլա,
Տեղադրեք ձեր Excel-ի հարցը մեր ֆորումում՝ https://www.extendoffice.com/forum.html Excel-ի մասին ավելի շատ աջակցություն ստանալու համար մեր Excel մասնագետից:
Այս մեկնաբանությունը կայքի վարողի կողմից նվազագույնի է հասցվել
Ես կարողացա ստեղծել մակրո, սակայն ես խնդիր ունեմ: Ես կցանկանայի ավտոմատ նամակ ուղարկել, երբ բջիջը հասնում է որոշակի շեմին: Բջիջը բանաձև է. Երբ հաշվարկային գումարը իջնում ​​է նշված շեմից, դա ոչինչ չի անում. սակայն, եթե ես մուտքագրեմ անմիջապես բջիջի մեջ, այն կմշակի մակրոն, ինչպես նախատեսված է: Բանաձևը խաթարո՞ւմ է մակրոները:
Այս մեկնաբանությունը կայքի վարողի կողմից նվազագույնի է հասցվել
Բարև Սիսի Ջոնս,
Այս հոդվածի մեթոդը. Ինչպե՞ս ինքնաբերաբար էլփոստ ուղարկել Excel-ում բջջային արժեքի հիման վրա:
https://www.extendoffice.com/documents/excel/4656-excel-send-email-based-on-cell-value.html կարող է օգնել ձեզ լուծել խնդիրը:
Այս մեկնաբանությունը կայքի վարողի կողմից նվազագույնի է հասցվել
Հարգելի՛ ղեկավար,


Ես քո օգնության կարիքը ունեմ,



Ես ունեմ excel՝ վերահսկելու մեր աշխատողի կողմից կատարված ամենօրյա աշխատանքի մանրամասները դաշտից, հետևաբար, հնարավո՞ր է փոստ ուղարկել excel թերթից, եթե տվյալ տղան չկարողանա թարմացնել տվյալ excel թերթի տվյալները:
Այս մեկնաբանությունը կայքի վարողի կողմից նվազագույնի է հասցվել
Ողջու՜յն,
Չի կարող օգնել այս հարցում:
Այս մեկնաբանությունը կայքի վարողի կողմից նվազագույնի է հասցվել
Եթե ​​ես ուզում եմ ուղարկել բջջային արժեքը հասցեի փոխարեն, ապա ի՞նչ փոխեմ կոդը:
Այս մեկնաբանությունը կայքի վարողի կողմից նվազագույնի է հասցվել
Ողջու՜յն,
Կարող եք փորձել ստորև ներկայացված VBA կոդը:

Private Sub Worksheet_Change (ByVal Target as Range)
Dim xRgSel As Range
Dim xOutApp-ը որպես օբյեկտ
Dim xMailItem-ը որպես օբյեկտ
Dim xMailBody որպես տող
Ս.թ. սխալի Ռեզյումե Next
Դիմում. ScreenUpdating = Սուտ է
Application.DisplayAlerts = Սխալ
Սահմանել xRg = միջակայք («A2:E11»)
Սահմանել xRgSel = Խաչմերուկ (Թիրախ, xRg)
ActiveWorkbook.Save
Եթե ​​ոչ xRgSel-ը ոչինչ է, ապա
Սահմանեք xOutApp = CreateObject («Outlook.Application»)
Սահմանել xMailItem = xOutApp.CreateItem(0)
xMailBody = «Բջջ(ներ)» & xRgSel.Address(False, False) & _
xRgSel.Value & _
" աշխատաթերթում '" & Me.Name & "' փոփոխվել են " & _-ում
Format$(Այժմ՝ «մմ/dd/yyyy») & « at « & Format$ (Այժմ՝ «hh:mm:ss») & _
" ըստ " & Environ$("username") & "."

xMailItem-ի հետ
. To = "Էլ. Փոստի հասցե"
.Subject = "Աշխատաթերթը փոփոխված է" և ThisWorkbook.FullName
.Body = xMailBody
.Attachments.Add (This Workbook.FullName)
.Dուցադրել
Վերջ
Սահմանել xRgSel = Ոչինչ
Սահմանել xOutApp = Ոչինչ
Սահմանել xMailItem = Ոչինչ
Վերջ: Եթե
Application.DisplayAlerts = Ճիշտ է
Դիմում. ScreenUpdating = ueիշտ է
Վերջ Sub
Այս մեկնաբանությունը կայքի վարողի կողմից նվազագույնի է հասցվել
Ինչ անել, եթե մենք ցանկանում ենք միայն թարմացված մեկնաբանությունները այդ բջիջում և ոչ ամբողջ բջիջի արժեքը: Այն պետք է ցույց տա միայն բջիջում ավելացված վերջին մեկնաբանությունները:
Այս մեկնաբանությունը կայքի վարողի կողմից նվազագույնի է հասցվել
Դուք հասկացե՞լ եք սա:
Այս մեկնաբանությունը կայքի վարողի կողմից նվազագույնի է հասցվել
Հիանալի տեղեկատվություն:
Հարց՝ կապված այն տեղեկատվության հետ, որը կարելի է ավելացնել էլ.
Օգտագործելով վերը նշված քո օրինակը....

Եթե ​​դուք արժեք ունենայիք F4-ում, ինչպե՞ս կներառեիք F4 արժեքը նամակում, որը ստեղծվել էր D4-ի փոփոխման ժամանակ:
Այս մեկնաբանությունը կայքի վարողի կողմից նվազագույնի է հասցվել
եթե ես պետք է ուղարկեմ այդ ամբողջ շարքը, ապա?
Այս մեկնաբանությունը կայքի վարողի կողմից նվազագույնի է հասցվել
Ես փորձել եմ վերևում գտնվող VBA ծածկագիրը. նամակ ուղարկեք, եթե նշված տիրույթի բջիջը փոփոխված է Excel-ում: Այս VBA-ն աշխատում է ինձ համար, բացառությամբ նամակ ուղարկելու: Երբ տվյալները փոփոխվում են տվյալ տիրույթում, ավտոմատ կերպով ստեղծվում է էլ. փոստ՝ փոփոխված բջջային մանրամասներով: Այնուամենայնիվ, նամակն ավտոմատ կերպով չի ուղարկվում ստացողին, և օգտվողը պետք է սեղմի ուղարկել կոճակը էլ. Այն, ինչ ես փնտրում եմ այստեղ, այն է, որ էլփոստը պետք է ավտոմատ կերպով ուղարկվի հասցեատերերին, երբ այն ստեղծվի: Խնդրում եմ, օգնեք ինձ տրամադրել կոդը դրա համար: Շատ շնորհակալություն
Այս մեկնաբանությունը կայքի վարողի կողմից նվազագույնի է հասցվել
Բարև Ջիմի Ջոզեֆ,
Խնդրում ենք «.Display» տողը փոխարինել «.Send»-ով: Հուսով եմ, որ կարող եմ օգնել: Շնորհակալություն մեկնաբանելու համար:
Այս մեկնաբանությունը կայքի վարողի կողմից նվազագույնի է հասցվել
Ողջու՜յն; կա՞ տարբերակ փոխելու ցուցադրվող տեքստը՝ օգտագործելով այլ բջիջների տեղեկատվությունը (առաջին տողից և առաջին սյունակից): Օրինակ, եթե ես փոխեմ K15 բջիջը, ես ուզում եմ հաղորդագրության մեջ ներառել A15 և K1 բջիջների մասին տեղեկությունները: ինչ պետք է փոխեմ կոդի մեջ շատ շնորհակալություն
Այս մեկնաբանությունը կայքի վարողի կողմից նվազագույնի է հասցվել
բարև Լաոնա: պարզե՞լ եք, թե ինչպես կարող եք դա անել:
Այս մեկնաբանությունը կայքի վարողի կողմից նվազագույնի է հասցվել
Բարեւ Ձեզ. Ինչպե՞ս կարող եմ փոփոխել կոդը այնպես, որ էլ-նամակ ուղարկվի մեկ այլ էլփոստի հասցեով, եթե բջիջների մեկ այլ տիրույթ խմբագրվի:
Այս մեկնաբանությունը կայքի վարողի կողմից նվազագույնի է հասցվել
Որևէ օգնություն այս խնդրանքով: Ես նույն խնդիրն ունեմ. Ես ուզում եմ ավելացնել մի քանի էլփոստի հասցե յուրաքանչյուր տողում, բայց երբ ես փոխում եմ մեկ տող, ամբողջ աշխատաթերթը փոխվում է: Ինչպե՞ս կարող եմ փոփոխությունները սահմանափակել միայն մեկ տողով:
Այս մեկնաբանությունը կայքի վարողի կողմից նվազագույնի է հասցվել
Խմբագրել գիծը՝
1). Կոդում A2:E11 այն միջակայքն է, որի հիման վրա էլփոստ կուղարկեք:
և
3). Փոստի հասցեն փոխարինեք ստացողի էլ.փոստի հասցեով՝ .To = "Email Address" տողում:

Աշխատում է լավ:
Այս մեկնաբանությունը կայքի վարողի կողմից նվազագույնի է հասցվել
Խնդրում եմ, կարող եք ավելի մանրամասն բացատրել սա: Ինչպե՞ս եք կրկնում կոդը՝ այլ էլփոստի ուղարկելու համար՝ հիմնված մեկ այլ տիրույթի փոփոխման վրա: Ես փորձել եմ պատճենել և տեղադրել ներքևում գտնվող կոդը և փոխել ձեր մեկնաբանության համաձայն, բայց դեռ միայն առաջին միջակայքն է թվում, որ կատարում է հրամանը և գրում է էլ.
Այս մեկնաբանությունը կայքի վարողի կողմից նվազագույնի է հասցվել
Որևէ մեկը սրա պատասխան ունի՞:
Այս մեկնաբանությունը կայքի վարողի կողմից նվազագույնի է հասցվել
Բարև, ես փորձում էի նամակներ ուղարկել իմ թերթիկում՝ օգտագործելով թերթի վրա փոխված մեկ արժեք: Եթե ​​H սյունակում կարգավիճակը կփոխվի «4»-ի, ապա ձախում գտնվող Պատվերի ID-ն պետք է ուղարկվի մեկ օգտատիրոջ: Թերթիկը դինամիկ է աշխատում, ուստի ես ունեմ D9:D140 միջակայք, որտեղ պատվերի id-ները պահվում են, և կարգավիճակի փոփոխությունները կատարվում են նույն տիրույթում H9:H140-ում: Ինչպե՞ս կարող եմ հասնել դրա նպատակին և ուղարկել պատվերի ID-ն իմ հաճախորդին, երբ կարգավիճակը փոխվել է «4»-ի:
Այս մեկնաբանությունը կայքի վարողի կողմից նվազագույնի է հասցվել
Հնարավո՞ր է արդյոք նույն սյունակում xMailBody-ում ցուցադրել այլ տեղեկատու բջիջ՝ փոփոխված բջիջների հասցեների փոխարեն:
Այս մեկնաբանությունը կայքի վարողի կողմից նվազագույնի է հասցվել
Ողջույն, Սեմ, Դուք ուզում եք պատահականորեն ընտրել հղման բջիջ փոփոխված բջջային հասցեի նույն սյունակում կամ ձեռքով մուտքագրել տեղեկատու բջիջ կոդի xMailBody տողում: Հեշտ է ձեռքով մուտքագրել տեղեկատու բջիջ կոդի մեջ: պարզապես կցեք հղման բջիջը կրկնակի չակերտներով, ինչպես ցույց է տրված ստորև. xMailBody = "Cell(s)" & "D3" & ", " & "D8" & _

Այս մեկնաբանությունը կայքի վարողի կողմից նվազագույնի է հասցվել
Հնարավո՞ր է փոխել սա, որպեսզի այն ցուցադրի էլփոստը միայն այն դեպքում, եթե տիրույթի բջիջը փոխվել է «Այո» ասելու համար: Կցանկանայի, որ այն ոչինչ չանի, եթե դա որևէ այլ արժեք է:
Այս մեկնաբանությունը կայքի վարողի կողմից նվազագույնի է հասցվել
Շնորհակալություն կոդի համար, այս կոդը աշխատում է, երբ ես մուտքագրում եմ արժեքը և սեղմում enter: Բայց իմ դեպքում բջիջը ավտոմատ կերպով լցվում է բանաձևով, և երբ արժեքը հասնում է, այն չի բացում էլփոստը, ուստի կոդը այս դեպքում չի աշխատում: Նախապես շնորհակալություն!
Այս մեկնաբանությունը կայքի վարողի կողմից նվազագույնի է հասցվել
Բարև Հաքանա,
Հետևյալ VBA կոդը կարող է օգնել ձեզ լուծել խնդիրը: Խնդրում եմ փորձեք: Շնորհակալություն արձագանքի համար:

Մասնավոր ենթաթերթ_Փոփոխություն (ByVal-ի նպատակը որպես միջակայք)
«Թարմացվել է Extendoffice 2022 / 04 / 15
Dim xRgSel As Range
Dim xOutApp-ը որպես օբյեկտ
Dim xMailItem-ը որպես օբյեկտ
Dim xMailBody որպես տող
Dim xBoolean որպես Boolean
Dim xItsRG որպես միջակայք
Dim xDDs As Range
Dim xDs As Range
Ս.թ. սխալի Ռեզյումե Next
Դիմում. ScreenUpdating = Սուտ է
Application.DisplayAlerts = Սխալ
xBoolean = Սխալ
Սահմանել xRg = միջակայք («E2:E13»)

Սահմանել xItsRG = Խաչմերուկ (Թիրախ, xRg)
Սահմանել xDDs = Intersect (Target.DirectDependents, xRg)
Սահմանել xDs = Intersect (Target. Dependents, xRg)
Եթե ​​ոչ (xItsRG-ը ոչինչ է) Ապա
Սահմանել xRgSel = xItsRG
xBoolean = Ճշմարիտ
ElseIf Not (xDDs Is Nothing) Ապա
Սահմանել xRgSel = xDDs
xBoolean = Ճշմարիտ
ElseIf Not (xDs Is Nothing) Ապա
Սահմանել xRgSel = xDs
xBoolean = Ճշմարիտ
Վերջ: Եթե


ActiveWorkbook.Save
Եթե ​​xBoolean Ապա
Debug.Print xRgSel.Address


Սահմանեք xOutApp = CreateObject («Outlook.Application»)
Սահմանել xMailItem = xOutApp.CreateItem(0)
xMailBody = «Բջջ(ներ)» & xRgSel.Address(False, False) & _
" աշխատաթերթում '" & Me.Name & "' փոփոխվել են " & _-ում
Format$(Այժմ՝ «մմ/dd/yyyy») & « at « & Format$ (Այժմ՝ «hh:mm:ss») & _
" ըստ " & Environ$("username") & "."

xMailItem-ի հետ
. To = "Էլ. Փոստի հասցե"
.Subject = "Աշխատաթերթը փոփոխված է" և ThisWorkbook.FullName
.Body = xMailBody
.Attachments.Add (This Workbook.FullName)
.Dուցադրել
Վերջ
Սահմանել xRgSel = Ոչինչ
Սահմանել xOutApp = Ոչինչ
Սահմանել xMailItem = Ոչինչ
Վերջ: Եթե
Application.DisplayAlerts = Ճիշտ է
Դիմում. ScreenUpdating = ueիշտ է
Վերջ Sub
Այս մեկնաբանությունը կայքի վարողի կողմից նվազագույնի է հասցվել
Ողջույն, ես ստեղծել եմ նմանատիպ կոդ, բայց ես կցանկանայի *** մի պայման, որտեղ եթե ջնջվի բջիջի արժեքը, որը ջնջված է, նամակ չի ուղարկվի, երբ այն պահպանվի/փակվի: Այն նամակ կուղարկի միայն այն դեպքում, երբ մուտքագրվի բջջային արժեքը: Գիտե՞ք ինչպես դա անել: Սա իմ կոդը.

ԿՈԴ՝ ՈՐՈՄԻՆ ԱՎՏՈՄԱՏ Էլ.

ԹԵՐԹԻ ԿՈԴԸ:

Տարբերակ Բացահայտ «Excel աշխատաթերթի փոփոխության իրադարձության տիրույթ
Private Sub Worksheet_Change (ByVal Target as Range)
Եթե ​​խաչմերուկ չէ (Թիրախ, միջակայք («C3:D62»)) Ոչինչ է, ուրեմն
'Target.EntireRow.Interior.ColorIndex = 15
Շրջանակ («XFD1048576»): Արժեք = 15
Վերջ: Եթե
Եթե ​​խաչմերուկ չէ (Թիրախ, միջակայք («I3:J21»)) Ոչինչ է, ուրեմն
'Target.EntireRow.Interior.ColorIndex = 15
Շրջանակ («XFD1048576»): Արժեք = 15
Վերջ: Եթե
Վերջ Sub


ԱՇԽԱՏԱՆՔԱՅԻՆ ԳՐՔԻ ԿՈԴ:

Մասնավոր ենթագիրք_BeforeClose (Չեղարկել որպես բուլյան)
If Me.Saved = False, then Me.Save

Dim xOutApp-ը որպես օբյեկտ
Dim xMailItem-ը որպես օբյեկտ
Dim xName As String

Եթե ​​միջակայք («XFD1048576»). Արժեք = 15 Ապա
Ս.թ. սխալի Ռեզյումե Next
Սահմանեք xOutApp = CreateObject («Outlook.Application»)
Սահմանել xMailItem = xOutApp.CreateItem(0)
xName = ActiveWorkbook.FullName
xMailItem-ի հետ
.To = «էլ.
.CC = ""
.Թեմա = «հաղորդագրություն»
.Body = «հաղորդագրություն»:
.Կցորդներ.*** xName
.Dուցադրել
«.ուղարկել
Վերջ
Վերջ: Եթե
Սահմանել xMailItem = Ոչինչ
Սահմանել xOutApp = Ոչինչ



Վերջ Sub

Մասնավոր ենթագիրք_Բաց()
Շրջանակ ("XFD1048576"): Մաքրել
Վերջ Sub
Այս մեկնաբանությունը կայքի վարողի կողմից նվազագույնի է հասցվել
Hi All,

der Code würde gut für mein Vorhaben passen, aber gibt es die Möglichkeit, dass er eine E-Mail beim speichern schreibt mit allen Zellen die geändert wurden? So wie es jetzt ist ,würde er jede geänderte Zelle einzeln senden. Dies ist dann problematisch wenn zB 10 Zellen angepasst werden էր 10 E-Mails beeuten würde. Und gibt es die Möglichkeit, die gesamte geänderte Zelle bei mir von A bis Y in einer E-Mail zu senden? Bisher haut der ja die Zellnummer in die E-Mail, wenn aber jemand anders Filtert wird er die Änderung nicht mehr finden.
Այս մեկնաբանությունը կայքի վարողի կողմից նվազագույնի է հասցվել
Բարև Էսսեր123,
Հետևյալ VBA կոդերը կարող են օգնել. Նշված տիրույթում բջիջները փոփոխելուց և աշխատանքային գրքույկը պահելուց հետո էլփոստի նամակ կհայտնվի, որտեղ կցուցադրվեն էլփոստի մարմնի բոլոր փոփոխված բջիջները, և աշխատանքային գիրքը կներառվի նաև էլ. Խնդրում ենք հետևել հետևյալ քայլերին.
1. Բացեք աշխատաթերթը, որը պարունակում է այն բջիջները, որոնց հիման վրա ցանկանում եք նամակներ ուղարկել, աջ սեղմեք թերթի ներդիրին և սեղմեք Դիտել կոդը աջ սեղմման մենյուից: Այնուհետև պատճենեք հետևյալ կոդը թերթի (կոդ) պատուհանում:
Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20220921
Dim xAddress As String
Dim xDRg, xRgSel, xRg As Range

xAddress = "A1:A8"
Set xDRg = Range(xAddress)
Set xRgSel = Intersect(Target, xDRg)
On Error GoTo Err1
If Not xRgSel Is Nothing Then
If ThisWorkbook.gChangeRange = "" Then
ThisWorkbook.gChangeRange = xRgSel.AddressLocal(False, False, xlA1, True, False)
Else
Set xRg = Range(ThisWorkbook.gChangeRange)
Set xRg = Application.Union(xRg, xRgSel)
ThisWorkbook.gChangeRange = xRg.AddressLocal(False, False, xlA1, True, False)
End If
End If
Exit Sub
Err1:
      ThisWorkbook.gChangeRange = xRgSel.AddressLocal(False, False, xlA1, True, False)
End Sub

2. Visual Basic խմբագրիչում կրկնակի սեղմեք Այս գործառույթը ձախ պատուհանում, ապա պատճենեք հետևյալ VBA կոդը Այս աշխատանքային գիրքը (ծածկագիր) պատուհան.
Option Explicit
Public gChangeRange As String
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
'Updated by Extendoffice 20220921
Dim xRgSel, xRg As Range
Dim xOutApp As Object
Dim xMailItem As Object
Dim xMailBody As String
'On Error Resume Next
On Error GoTo Err1
Set xRg = Range(gChangeRange)
If Not xRg Is Nothing Then
   Set xOutApp = CreateObject("Outlook.Application")
        Set xMailItem = xOutApp.CreateItem(0)
        xMailBody = "Email Body: " & vbCrLf & "The following cells were modified:" & xRg.Address(False, False)
        With xMailItem
            .To = "Email Address"
            .Subject = "Worksheet modified in " & ThisWorkbook.FullName
            .Body = xMailBody
            .Attachments.Add (ThisWorkbook.FullName)
            .Display
        End With
        Set xRgSel = Nothing
        Set xOutApp = Nothing
        Set xMailItem = Nothing
End If
Err1:
gChangeRange = ""
End Sub
Այս մեկնաբանությունը կայքի վարողի կողմից նվազագույնի է հասցվել
Ես օգնության կարիք ունեմ մի փոքր փոփոխությամբ էլփոստի գործարկման հարցում: Թվային արժեքի կամ տեղեկատվությունը բջջի մեջ ձեռքով մուտքագրելու փոխարեն, B սյունակի բջիջները կփոխվեն «Y»-ի, որը գործարկվում է այդ շարքի այլ բջիջների բանաձևից: B սյունակի բանաձևն է =IF([@[Քանակը պահեստում]]>[@[Պատվերի մակարդակը]],«Y»), որը ցույց է տալիս, որ պաշարը քիչ է և կարիք ունի վերապատվերի: Ես պետք է գործարկեմ ավտոմատ էլ. Ես փորձել եմ այն ​​ամենը, ինչի մասին կարող էի մտածել արդեն տրամադրված կոդերի փոփոխման մեջ, բայց կարծես ոչինչ ինձ մոտ չի ստացվում... խնդրում եմ օգնեք:
Այս մեկնաբանությունը կայքի վարողի կողմից նվազագույնի է հասցվել
Բարև Քեթրին Ֆ.
Հետևյալ VBA կոդը կարող է օգնել ձեզ լուծել խնդիրը: Խնդրում եմ, փորձեք: Շնորհակալություն մեկնաբանության համար։
Dim xRg As Range
'Update by Extendoffice 20221019
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Cells.Count > 1 Then Exit Sub
Set xRg = Intersect(Range("B:B"), Target)
If xRg Is Nothing Then Exit Sub
If Target.Value = "Y" 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

Private Sub Worksheet_Calculate()
Dim xTarget As String
Dim xRg As Range
'Set xRg = Application.Range("B:B")
Set xRg = Intersect(Range("B:B"), Selection.EntireRow)
On Error GoTo Err01
If xRg.Value = "Y" Then
Call Mail_small_Text_Outlook
End If
Err01:
End Sub
Այս մեկնաբանությունը կայքի վարողի կողմից նվազագույնի է հասցվել
Բարև և շնորհակալություն այս ձեռնարկի համար:
J'ai cependant une hardé pour l'application de la plage de recherche.
Dans le code, j'ai demandé à vérifier la plage C2:C4.
Tout fonctionne bien si je փոփոխել C2, C3 կամ C4 եզակիությունը: Cela fonctionne aussi si je modifie C2+C3+C4 ou C2+C3 ou C3+C4 mais cela ne fonctionne pas si j'ai un saut dans la plage. Օրինակ, եթե փոփոխեք C2 և C4 առանց C3 փոփոխիչի:
Est-ce que quelqu'un pourrait m'aider pour m'indiquer où se trouve mon erreur ?
Merci d'avance:

Private Sub Worksheet_Change (ByVal Target as Range)
«Թարմացվել է Extendoffice 20220921
Dim xAddress As String
Dim xDRg, xRgSel, xRg As Range

xAddress = «C2:C4»
Սահմանել xDRg = Range (xAddress)
Սահմանել xRgSel = Խաչմերուկ (Թիրախ, xDRg)
Սխալի դեպքում GoTo Err1
Եթե ​​ոչ xRgSel-ը ոչինչ է, ապա
If ThisWorkbook.gChangeRange = "" Ապա
ThisWorkbook.gChangeRange = xRgSel.AddressLocal(False, False, xlA1, True, False)
Ուրիշ
Սահմանել xRg = Range (ThisWorkbook.gChangeRange)
Սահմանել xRg = Application.Union (xRg, xRgSel)
ThisWorkbook.gChangeRange = xRg.AddressLocal(False, False, xlA1, True, False)
Վերջ: Եթե
Վերջ: Եթե
Ելք ենթ
Սխալ 1:
ThisWorkbook.gChangeRange = xRgSel.AddressLocal(False, False, xlA1, True, False)
Վերջ Sub


-----

Option Explicit- ը
Հանրային gChangeRange որպես տող
Մասնավոր ենթագիրք_Փրկելուց հետո (ByVal Success As Boolean)
«Թարմացվել է Extendoffice 20220921
Dim xRgSel, xRg As Range
Dim xOutApp-ը որպես օբյեկտ
Dim xMailItem-ը որպես օբյեկտ
Dim xMailBody որպես տող
«Սխալի դեպքում վերսկսել հաջորդը
Սխալի դեպքում GoTo Err1
Սահմանել xRg = Range (gChangeRange)
Եթե ​​ոչ xRg-ը ոչինչ է, ապա
Սահմանեք xOutApp = CreateObject («Outlook.Application»)
Սահմանել xMailItem = xOutApp.CreateItem(0)
xMailBody = "Cher Jean-Marie, " & vbCrLf & vbCrLf & "Dans le fichier: " & ThisWorkbook.FullName & vbCrLf & "La plage de cellules a été modifiée:" & xRg.Address(False)fLfLbr. & "Cordialement"
xMailItem-ի հետ
.To = "x.xxxxxx@xxxx.fr"
.Subject = "Données modifiées" & This Workbook.Name
.Body = xMailBody
.Attachments.Add (This Workbook.FullName)
.Dուցադրել
Վերջ
Սահմանել xRgSel = Ոչինչ
Սահմանել xOutApp = Ոչինչ
Սահմանել xMailItem = Ոչինչ
Վերջ: Եթե
Սխալ 1:
gChangeRange = ""
Վերջ Sub
Այս մեկնաբանությունը կայքի վարողի կողմից նվազագույնի է հասցվել
Ես ուզում եմ նամակ ուղարկել 5 հոգու: Ինչ գծանշիչ է օգտագործվում յուրաքանչյուր էլփոստի հասցեի միջև:
Այս մեկնաբանությունը կայքի վարողի կողմից նվազագույնի է հասցվել
Բարև Joո
Խնդրում ենք օգտագործել ստորակետ՝ էլփոստի հասցեները առանձնացնելու համար:
Այս մեկնաբանությունը կայքի վարողի կողմից նվազագույնի է հասցվել
Ահա ևս մեկ հարց. Եթե ​​մեկ բջիջ փոխվում է, այն նամակ է ուղարկում: եթե փոխվում է 3 բջիջ, այն ուղարկում է 3 նամակ: Ինչպե՞ս կարող եք դադարեցնել դա, որպեսզի այն ուղարկի միայն 1 նամակ, երբ փոփոխություններն ավարտվեն:
Այս մեկնաբանությունը կայքի վարողի կողմից նվազագույնի է հասցվել
Բարև Joո
Ենթադրենք ծածկագրում նշել եք միջակայքը որպես «A2:E11»: Ինչպե՞ս կարող եմ ստուգել, ​​երբ ամբողջ խմբագրումն ավարտված է:
Առայժմ ոչ մի մեկնաբանություն չկա

Հետեւեք մեզ

Հեղինակային իրավունքի © 2009 - www.extendoffice.com. | Բոլոր իրավունքները պաշտպանված են. Powered by ExtendOffice. | | Կայքի քարտեզ
Microsoft- ը և Office- ի պատկերանշանը հանդիսանում են Microsoft Corporation- ի ապրանքային նշաններ կամ գրանցված ապրանքային նշաններ ԱՄՆ-ում և (կամ) այլ երկրներում:
Պաշտպանված է Sectigo SSL- ի կողմից