>

A 열부터 G 열까지의 마지막 행 범위를 포함하는 본문에 작은 메시지와 함께 Excel 스프레드 시트에서 이메일을 보내려고합니다.

성공하지 않고 마지막 행 범위를 다음 코드에 추가하려고했습니다.

도움이 될 수 있습니까?

Sub Mail_LastRowRange_Outlook()
Dim OutApp As Object
Dim OutMail As Object
Dim strbody As String
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
strbody = "Thanks for your help" & '**I Would like to insert_
           my last row range from column A to G in here**
On Error Resume Next
With OutMail
    .To = ""
    .CC = ""
    .BCC = ""
    .Subject = "Looking for a solution"
    .Body = strbody
    .Attachments.Add ("C:\test.txt")
    .Send   
End With
On Error GoTo 0
Set OutMail = Nothing
Set OutApp = Nothing
End Sub

  • 답변 # 1

    Sub test1()
      Dim lastRow As Long
      'get last row from column A of worksheet with 'codename' Sheet1
      lastRow = getLastRow(Sheet1, 1)
      Dim r As Range
      Set r = Sheet1.Range("A" & lastRow & ":G" & lastRow)
      Dim str As String
      'Join the cell texts with a space - lazy coding...
      str = Join(Application.Transpose(Application.Transpose(r.Value2)), " ")
      MsgBox str
    End Sub
    
    Public Function getLastRow(ws As Worksheet, Optional col As Long) As Long
      Dim arr As Variant
      If col > 0 Then
            arr = Intersect(ws.UsedRange, ws.Columns(col)).Value2
      Else
            arr = ws.UsedRange.Value2
      End If
      Dim i As Long, j As Long
      For i = UBound(arr) To 1 Step -1
            For j = UBound(arr, 2) To 1 Step -1
                  If Len(arr(i, j)) > 0 Then
                        getLastRow = i + ws.UsedRange.Row - 1
                        Exit Function
                  End If
            Next j
      Next i
    End Function
    
    

    위의 함수는 워크 시트/열에서 실제 데이터 값의 마지막 행을 가져 오는THE가장 강력한 함수입니다. Range.Find("*", , , , , xlPrevious) 를 포함한 다른 모든 것은 취약합니다  필터링 된 ListObject의 activeCell에 취약합니다.

    아래 함수는 필터링 된 행, 데이터가있는 마지막 행 등과 같은 몇 가지에 취약합니다.

    Public Function getLastRow2(ws As Worksheet, col As Long) As Long
        getLastRow2 = ws.Cells(ws.Rows.Count, col).End(xlUp).Row
    End Function
    
    

  • 답변 # 2

    특정 행을 결정하고 범위 개체를 만들고 반복합니다 (예 :

    ).

       Dim rng As range
        Dim item As range
        Dim row As Long
        Set rng = range(Cells(row, 1), Cells(row, 7))
        For Each item In rng
            strBody = strBody & " " & item
        Next item
    
    

  • 답변 # 3

    A 열의 데이터가있는 행 A1부터 마지막 ​​행까지의 A 열에 빈 셀이없는 한 작동합니다. "strbody = ...."가있는 행을 바꾸십시오. 이 모든 것들과 함께.

    Cells(1,1).Select
    Selection.End(xlDown).Select
    Dim s As String
    s = ActiveCell.Value     'A
    ActiveCell.Offset(0, 1).Select
    s = s & ActiveCell.Value 'B
    ActiveCell.Offset(0, 1).Select
    s = s & ActiveCell.Value 'C
    ActiveCell.Offset(0, 1).Select
    s = s & ActiveCell.Value 'D
    ActiveCell.Offset(0, 1).Select
    s = s & ActiveCell.Value 'E
    ActiveCell.Offset(0, 1).Select
    s = s & ActiveCell.Value 'F
    ActiveCell.Offset(0, 1).Select
    s = s & ActiveCell.Value 'G
    strbody = "Thanks for your help" & s
    
    

관련 자료

  • 이전 php - return_url의 데이터를 처리하지 않고도 Paypal에서 IPN/Webhook을 트리거 할 수 있습니까?
  • 다음 vscode settings - Visual Studio 코드는 점, 괄호 및 기타 상황에 따른 문자에서 자동 완성을 지원합니까?