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

Excel에서 특정 셀이 수정 된 경우 이메일을 보내는 방법은 무엇입니까?

이 문서에서는 Excel에서 특정 범위의 셀이 수정될 때 Outlook을 통해 전자 메일을 보내는 방법에 대해 설명합니다.

특정 범위의 셀이 VBA 코드로 수정되면 이메일 보내기


특정 범위의 셀이 VBA 코드로 수정되면 이메일 보내기

A2:E11 범위의 셀이 특정 워크시트에서 수정될 때 활성 통합 문서가 첨부된 새 이메일을 자동으로 생성해야 하는 경우 다음 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

노트:

1). 코드에서 A2 : E11 이메일을 보낼 범위입니다.
2). 필요에 따라 이메일 본문을 변경하십시오. xMailBody 코드의 줄.
삼). 교체 이메일 주소 받는 사람 이메일 주소와 함께 .To = "이메일 주소".
4). 줄에서 이메일 제목 변경 .Subject = ""& ThisWorkbook.FullName에서 수정 된 워크 시트.

3. 누르세요 다른 + Q 키를 동시에 닫아 응용 프로그램 용 Microsoft Visual Basic 창.

이제부터 A2 : E11 범위의 모든 셀이 수정되고 업데이트 된 통합 문서가 첨부 된 새 전자 메일이 생성됩니다. 제목, 수신자 및 이메일 본문과 같은 지정된 모든 필드가 이메일에 나열됩니다. 이메일을 보내주세요.

주의 사항: VBA 코드는 Outlook을 이메일 프로그램으로 사용하는 경우에만 작동합니다.


관련 기사 :


최고의 사무 생산성 도구

Excel용 Kutools는 대부분의 문제를 해결하고 생산성을 80% 증가시킵니다.

  • 재사용: 빠르게 삽입 복잡한 공식, 차트 그리고 이전에 사용한 모든 것; 셀 암호화 암호로; 메일 링리스트 생성 이메일 보내기 ...
  • 슈퍼 포뮬러 바 (여러 줄의 텍스트와 수식을 쉽게 편집 할 수 있습니다.) 레이아웃 읽기 (많은 수의 셀을 쉽게 읽고 편집합니다.) 필터링 된 범위에 붙여 넣기...
  • 셀 / 행 / 열 병합 데이터 손실없이; 셀 내용 분할; 중복 행 / 열 결합... 중복 셀 방지; 범위 비교...
  • 중복 또는 고유 선택 행; 빈 행 선택 (모든 셀이 비어 있음); 슈퍼 찾기 및 퍼지 찾기 많은 통합 문서에서; 무작위 선택 ...
  • 정확한 사본 수식 참조를 변경하지 않고 여러 셀; 참조 자동 생성 여러 시트에; 글 머리 기호 삽입, 확인란 등 ...
  • 텍스트 추출, 텍스트 추가, 위치 별 제거, 공간 제거; 페이징 부분합을 만들고 인쇄합니다. 셀 내용과 주석 간 변환...
  • 슈퍼 필터 (다른 시트에 필터 구성표 저장 및 적용) 고급 정렬 월 / 주 / 일, 빈도 등 특수 필터 굵은 기울임 꼴로 ...
  • 통합 문서와 워크 시트 결합; 키 열을 기반으로 테이블 병합; 데이터를 여러 시트로 분할; xls, xlsx 및 PDF 일괄 변환...
  • 300개 이상의 강력한 기능. Office / Excel 2007-2021 및 365를 지원합니다. 모든 언어를 지원합니다. 기업 또는 조직에서 쉽게 배포할 수 있습니다. 전체 기능은 30일 무료 평가판입니다. 60일 환불 보장.
kte 탭 201905

Office Tab은 Office에 탭 인터페이스를 제공하여 작업을 훨씬 쉽게 만듭니다.

  • Word, Excel, PowerPoint에서 탭 편집 및 읽기 사용, Publisher, Access, Visio 및 Project.
  • 새 창이 아닌 동일한 창의 새 탭에서 여러 문서를 열고 만듭니다.
  • 생산성을 50% 높이고 매일 수백 번의 마우스 클릭을 줄입니다!
officetab 하단
코멘트 (37)
아직 평가가 없습니다. 가장 먼저 평가하세요!
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
VB 코드 아래에 갇혀 있습니다. 데이터가 변경된 사용자에게 이메일 알림을 받으려고 합니다. 이메일은 작동하지만 변경을 하면 이메일이 한 번에 시작되지만 영향을 받은 모든 사용자에게 모든 변경을 수행한 후 Excel 시트가 저장되고 닫힐 때 이메일을 원합니다. 또한 이것은 전체 Excel 통합 문서의 모든 시트에서 작동해야 합니다.

도와주세요...

Private Sub Workbook_BeforeSave(ByVal SaveAsUI를 부울로, 취소를 부울로)

'****객체 및 변수 선언********

Dim xRgSel As Range Dim xOutApp As Object Dim xMailItem As Object Dim xMailBody as String Dim mailTo as String

오류에 대한 다음 재개

Sheets("TargetSheet").Range("TargetRange").Select

Application.ScreenUpdating = 거짓 Application.DisplayAlerts = 거짓

'xRg 설정 = Range("A" & Rows.Count).End(xlUp).Row

xRg = 범위 설정("A2:DA1000")
xRgSel = Intersect(대상, xRg) 설정


ActiveWorkbook.Save
'**********Outlook 응용 프로그램 시작***********

xRgSel이 아닌 경우

xOutApp 설정 = CreateObject("Outlook.Application")
xMailItem = xOutApp.CreateItem(0) 설정

xMailBody = "셀" & xRgSel.Address(False, False) & _
" 워크시트의 '" & Me.Name & "'이(가) " & _에서 수정되었습니다.
Format$(지금, "mm/dd/yyyy") & " at " & Format$(지금, "hh:mm:ss") & _
" by " & Environ$("사용자 이름") & "."
'**************수신자 목록 찾기************

If Cells(xRgSel.Row, "A").Value = "Pankaj" 다음

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

END IF

If Cells(xRgSel.Row, "A").Value = "Nitin" 다음

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

END IF

If Cells(xRgSel.Row, "A").Value = "Chandan" 그러면

mailTo = "pakxro**@gmail.com"

END IF
'****************이메일 작성*************

xMailItem 사용

.받는 사람 = mailTo
.Subject = ""& ThisWorkbook.FullName에서 수정 된 워크 시트
.Body = xMailBody
'.Attachments.Add(ThisWorkbook.FullName)
.디스플레이



xRgSel = 없음으로 설정
xOutApp = 없음 설정
xMailItem 설정 = 없음

END IF

Application.DisplayAlerts = 참
Application.ScreenUpdating = True
최종 하위
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
친애하는 Pankaj Shukla,
포럼에 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 코드를 시도할 수 있습니다.

개인 하위 Worksheet_Change (범위로 ByVal 대상)
Dim xRgSel As Range
개체로 Dim xOutApp
xMailItem을 개체로 흐리게 처리
Dim xMailBody를 문자열로
오류에 대한 다음 재개
Application.ScreenUpdating = False
Application.DisplayAlerts = False
xRg = 범위 설정("A2:E11")
xRgSel = Intersect(대상, xRg) 설정
ActiveWorkbook.Save
xRgSel이 아닌 경우
xOutApp 설정 = CreateObject("Outlook.Application")
xMailItem = xOutApp.CreateItem(0) 설정
xMailBody = "셀" & xRgSel.Address(False, False) & _
xRgSel.Value & _
" 워크시트의 '" & Me.Name & "'이(가) " & _에서 수정되었습니다.
Format$(지금, "mm/dd/yyyy") & " at " & Format$(지금, "hh:mm:ss") & _
" by " & Environ$("사용자 이름") & "."

xMailItem 사용
.To = "이메일 주소"
.Subject = ""& ThisWorkbook.FullName에서 수정 된 워크 시트
.Body = xMailBody
.Attachments.Add(ThisWorkbook.FullName)
.디스플레이

xRgSel = 없음으로 설정
xOutApp = 없음 설정
xMailItem 설정 = 없음
END IF
Application.DisplayAlerts = 참
Application.ScreenUpdating = True
최종 하위
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
전체 셀 값이 아닌 해당 셀의 업데이트된 주석만 원하는 경우 셀에 추가된 최신 주석만 표시해야 합니다.
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
이거 알아 냈어?
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
훌륭한 정보.
이메일에 추가할 수 있는 정보에 관한 질문입니다.
위의 예를 사용하여 ....

F4에 값이 있는 경우 D4가 수정될 때 생성된 이메일에 F4 값을 어떻게 포함하시겠습니까?
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
그러면 전체 행을 보내야 합니까?
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
위의 VBA 코드를 시도했습니다. Excel에서 지정된 범위의 셀이 수정되면 이메일을 보냅니다. 이 VBA는 이메일 보내기를 제외하고는 저에게 효과적입니다. 지정된 범위에서 데이터가 수정되면 수정된 셀 세부 정보가 포함된 이메일이 자동으로 생성됩니다. 단, 메일은 자동으로 수신자에게 발송되지 않으며, 사용자는 메일에 있는 보내기 버튼을 눌러야 합니다. 내가 여기서 찾고 있는 것은 이메일이 생성될 때 수신자에게 자동으로 보내져야 한다는 것입니다. 이에 대한 코드를 제공하도록 도와주세요. 많은 감사
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
안녕하세요 지미 조셉입니다.
".Display" 줄을 ".Send"로 바꾸십시오. 내가 도울 수 있기를 바랍니다. 댓글 주셔서 감사합니다.
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
안녕; 다른 셀(첫 번째 행과 첫 번째 열)의 정보를 사용하여 표시되는 텍스트를 변경하는 방법이 있습니까? 예를 들어, 셀 K15를 변경하면 셀 A15 및 K1에 대한 메시지 정보를 포함하고 싶습니까? 코드에서 무엇을 변경해야합니까? 매우 감사합니다
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
안녕하세요 라오나입니다. 어떻게 할 수 있는지 알아?
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
안녕하세요. 다른 셀 범위를 편집한 경우 다른 전자 메일 주소로 전자 메일을 보내도록 코드를 수정하려면 어떻게 해야 합니까?
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
이 요청에 도움이 되셨나요? 같은 문제가 있습니다. 한 행에 여러 이메일 주소를 추가하고 싶지만 한 행을 변경하면 전체 워크시트가 변경됩니다. 변경 사항을 한 행으로만 제한하려면 어떻게 합니까?
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
리니 편집:
1). 코드에서 A2:E11은 이메일을 보낼 범위입니다.

삼). 이메일 주소를 .To = "Email Address" 줄에서 받는 사람 이메일 주소로 바꿉니다.

잘 작동합니다.
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
이에 대해 더 설명해 주시겠습니까? 수정 중인 다른 범위를 기반으로 다른 이메일로 보내기 위해 코드를 어떻게 반복합니까? 아래 코드를 복사하여 붙여넣고 귀하의 의견에 따라 변경하려고 시도했지만 여전히 첫 번째 범위만 명령을 실행하고 이메일을 작성하는 것 같습니다.
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
이에 대한 답이 있는 사람이 있습니까?
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
안녕하세요, 시트에서 변경된 하나의 값을 사용하여 시트에 이메일을 보내려고 했습니다. 열 H에서 상태가 ="4"로 변경되면 왼쪽의 주문 ID를 한 사용자에게 보내야 합니다. 시트는 동적으로 작동하므로 주문 ID가 저장되고 상태 변경이 H9:H140의 동일한 범위에서 이루어지는 D9:D140의 범위가 있습니다. 상태가 ="4"로 변경된 경우 목표에 도달하고 주문 ID를 고객에게 보내려면 어떻게 해야 합니까?
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
수정된 셀 주소 대신 동일한 열의 xMailBody에 다른 참조 셀을 표시할 수 있습니까?
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
안녕하세요 Sam,수정된 셀 주소의 동일한 열에서 임의로 참조 셀을 선택하시겠습니까? 아니면 코드의 xMailBody 라인에 참조 셀을 수동으로 입력하시겠습니까?코드에 참조 셀을 수동으로 입력하는 것은 쉽습니다. 참조 셀을 아래와 같이 큰따옴표로 묶으면 됩니다. xMailBody = "Cell(s) " & "D3" & ", " & "D8" & _

이 댓글은 사이트의 중재자에 의해 최소화되었습니다
범위의 셀이 "예"로 표시되도록 변경된 경우에만 이메일을 표시하도록 변경할 수 있습니까? 다른 값이면 아무것도 하지 않기를 원합니다.
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
코드 감사합니다. 이 코드는 값을 입력하고 Enter 키를 누르면 작동합니다. 그러나 제 경우에는 셀이 자동으로 수식으로 채워지고 값에 도달하면 이메일이 열리지 않으므로 이 경우 코드가 작동하지 않습니다. 미리 감사합니다!
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
안녕하세요 하카나님
다음 VBA 코드는 문제를 해결하는 데 도움이 될 수 있습니다. 시도해 보십시오. 의견을 보내 주셔서 감사합니다.

Private Sub Worksheet_Change(ByVal Target As Range)
'에 의해 업데이트됨 Extendoffice 2022 / 04 / 15
Dim xRgSel As Range
개체로 Dim xOutApp
xMailItem을 개체로 흐리게 처리
Dim xMailBody를 문자열로
부울로 Dim xBoolean
범위로 xItsRG 흐리게 하기
xDD를 범위로 흐리게 처리
범위로 희미한 xD
오류에 대한 다음 재개
Application.ScreenUpdating = False
Application.DisplayAlerts = False
xBoolean = 거짓
xRg = 범위 설정("E2:E13")

xItsRG = Intersect(Target, xRg) 설정
xDD 설정 = Intersect(Target.DirectDependents, xRg)
xDs = Intersect(Target.Dependents, xRg) 설정
그렇지 않은 경우(xItsRG는 아무것도 아님) 다음
xRgSel = xItsRG 설정
xBoolean = 참
ElseIf Not(xDD는 아무것도 아님) 그러면
xRgSel = xDD로 설정
xBoolean = 참
ElseIf Not(xD는 아무것도 아님) 그러면
xRgSel = xDs 설정
xBoolean = 참
END IF


ActiveWorkbook.Save
xBoolean이면
Debug.Print xRgSel.Address


xOutApp 설정 = CreateObject("Outlook.Application")
xMailItem = xOutApp.CreateItem(0) 설정
xMailBody = "셀" & xRgSel.Address(False, False) & _
" 워크시트의 '" & Me.Name & "'이(가) " & _에서 수정되었습니다.
Format$(지금, "mm/dd/yyyy") & " at " & Format$(지금, "hh:mm:ss") & _
" by " & Environ$("사용자 이름") & "."

xMailItem 사용
.To = "이메일 주소"
.Subject = ""& ThisWorkbook.FullName에서 수정 된 워크 시트
.Body = xMailBody
.Attachments.Add(ThisWorkbook.FullName)
.디스플레이

xRgSel = 없음으로 설정
xOutApp = 없음 설정
xMailItem 설정 = 없음
END IF
Application.DisplayAlerts = 참
Application.ScreenUpdating = True
최종 하위
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
안녕하세요 비슷한 코드를 생성했는데 셀 값이 삭제되면 저장/닫을 때 이메일이 전송되지 않는 조건을 *** 하고 싶습니다. 셀 값이 입력된 경우에만 이메일을 보냅니다. 이 작업을 수행하는 방법을 알고 있습니까? 이것은 내 코드입니다.

Excel 통합 문서가 업데이트될 때 누군가에게 자동으로 이메일을 보내는 코드

시트 코드:

Option Explicit 'Excel 워크시트 변경 이벤트 범위
개인 하위 Worksheet_Change (범위로 ByVal 대상)
If Not Intersect(Target, Range("C3:D62")) Is nothing then
'Target.EntireRow.Interior.ColorIndex = 15
범위("XFD1048576").값 = 15
END IF
If Not Intersect(Target, Range("I3:J21")) is nothing then
'Target.EntireRow.Interior.ColorIndex = 15
범위("XFD1048576").값 = 15
END IF
최종 하위


통합 문서 코드:

비공개 하위 통합 문서_BeforeClose(부울로 취소)
Me.Saved = False이면 Me.Save

개체로 Dim xOutApp
xMailItem을 개체로 흐리게 처리
Dim xName을 문자열로

범위("XFD1048576").값 = 15이면
오류에 대한 다음 재개
xOutApp 설정 = CreateObject("Outlook.Application")
xMailItem = xOutApp.CreateItem(0) 설정
xName = ActiveWorkbook.FullName
xMailItem 사용
.To = "이메일"
.CC = ""
.제목 = "메시지"
.Body = "메시지!"
.첨부 파일.*** xName
.디스플레이
'.보내다

END IF
xMailItem 설정 = 없음
xOutApp = 없음 설정



최종 하위

개인 서브 Workbook_Open ()
범위("XFD1048576"). 지우기
최종 하위
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
모든 안녕

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? 그래서 wie es jetzt ist, würde er jede geänderte Zelle einzeln senten. Dies ist dann problematisch wenn zB 10 Zellen angepasst werden was 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.
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
안녕하세요 Esser123입니다.
다음 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 코드를 복사합니다. ThisWorkbook (코드) 창.
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")이며 재고가 부족하여 재주문이 필요함을 나타냅니다. B열의 셀 값이 'Y'로 변경될 때 자동 이메일을 트리거해야 하므로 재고가 적은 이메일을 통해 자동으로 알림을 받습니다. 이미 제공된 코드를 변경하여 생각할 수 있는 모든 것을 시도했지만 아무 것도 작동하지 않는 것 같습니다... 도와주세요!
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
안녕하세요 Kathryn F,
다음 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.
C2, C3 또는 C4 고유의 기능을 수정하십시오. Cela fonctionne aussi je modify 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.

개인 하위 Worksheet_Change (범위로 ByVal 대상)
'에 의해 업데이트됨 Extendoffice 20220921
Dim xAddress를 문자열로
Dim xDRg, xRgSel, xRg As Range

xAddress = "C2:C4"
xDRg 설정 = 범위(xAddress)
xRgSel = Intersect(대상, xDRg) 설정
오류 시 Err1로 이동
xRgSel이 아닌 경우
If ThisWorkbook.gChangeRange = "" 다음
ThisWorkbook.gChangeRange = xRgSel.AddressLocal(False, False, xlA1, True, False)
다른
xRg = 범위 설정(ThisWorkbook.gChangeRange)
xRg = Application.Union(xRg, xRgSel) 설정
ThisWorkbook.gChangeRange = xRg.AddressLocal(False, False, xlA1, True, False)
END IF
END IF
서브 종료
오류1:
ThisWorkbook.gChangeRange = xRgSel.AddressLocal(False, False, xlA1, True, False)
최종 하위


-----

Option Explicit
문자열로 공개 gChangeRange
Private Sub Workbook_AfterSave(ByVal Success as Boolean)
'에 의해 업데이트됨 Extendoffice 20220921
Dim xRgSel, 범위로 xRg
개체로 Dim xOutApp
xMailItem을 개체로 흐리게 처리
Dim xMailBody를 문자열로
'오류 발생 시 다음 재개
오류 시 Err1로 이동
xRg 설정 = 범위(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, False) & vbCrLf & "친절"
xMailItem 사용
.To = "x.xxxxxx@xxxx.fr"
.Subject = "Données modifiées" & ThisWorkbook.Name
.Body = xMailBody
.Attachments.Add(ThisWorkbook.FullName)
.디스플레이

xRgSel = 없음으로 설정
xOutApp = 없음 설정
xMailItem 설정 = 없음
END IF
오류1:
gChangeRange = ""
최종 하위
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
5명에게 메일을 보내고 싶습니다. 각 이메일 주소 사이에 어떤 구분자를 사용합니까?
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
안녕하세요 조,
이메일 주소를 구분하려면 세미콜론을 사용하십시오.
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
여기 또 다른 질문이 있습니다. 하나의 셀이 변경되면 이메일을 보냅니다. 3개의 셀이 변경되면 3개의 이메일을 보냅니다. 편집이 완료되면 1개의 이메일만 보내도록 이 작업을 어떻게 중지합니까?
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
안녕하세요 조,
코드에서 범위를 "A2:E11"로 지정했다고 가정합니다. 전체 편집이 완료되면 어떻게 확인할 수 있습니까?
아직 코멘트가 없습니다
여러분의 의견을 남겨
게스트로 게시
×
이 게시물 평가 :
0   등장 인물
추천 위치

Follow Us

저작권 © 2009 - WWW.extendoffice.com. | 판권 소유. 에 의해 구동 ExtendOffice. | | 사이트 맵
Microsoft 및 Office 로고는 미국 및 / 또는 기타 국가에서 Microsoft Corporation의 상표 또는 등록 상표입니다.
Sectigo SSL로 보호