首页 > 解决方案 > 跳过空白单元格并完成的宏(发送电子邮件的按钮)

问题描述

我有一个宏有问题,我用一个按钮自动发送电子邮件......我不是专家,所以我正在寻求你的帮助(这让我发疯......顺便说一句我说西班牙语)

宏如下:

Sub Enviar_Correo2()
'
' Enviar_Correo2
' Enviar por correo electrónico automáticamente el resumen ejecutivo del trabajo de los Equipos de Mejora Continua
'Seleccionamos el rango de celdas a enviar Select

ThisWorkbook.Sheets("Resumen ejecutivo").Range("$A$1:$K$52").Select
For I = 1 To 10
'El valor de i se pone en la celda F18 para que con BUSCARV se devuelvan
'los datos correspondientes al ID.
ThisWorkbook.Sheets("Configuraciones iniciales").Range("F18").Value = I
'Mostramos la sección para enviar correo.
ActiveWorkbook.EnvelopeVisible = True
'Llamamos al envío...
With ActiveSheet.MailEnvelope
.Item.To = ThisWorkbook.Sheets("Configuraciones iniciales").Range("$B$19").Value
'.Item.cc = "correo1@dominio.com" 'con copia a...
'.Item.bcc = "correo2@dominio.com" 'con copia oculta a...
.Item.Subject = "PROPUESTA DE TEMAS PARA APROBACIÓN GERENCIAL"
.Introduction = "Estimados Srs.: Por medio de la presente nos permitimos plantear a Ustedes los siguientes tres temas seleccionados por nuestro Equipo de Mejora Continua, con la finalidad que nos asignen uno para iniciar su estudio. Estamos seguros que el trabajo a realizar sera un aporte valioso para nuestra empresa."
.Item.Send
End With
Next I
End Sub

在这个宏中,我想将一系列单元格从“Resumen ejecutivo”工作表发送到最多 10 封本地化在另一个名为“Configuraciones iniciales”的工作表中的电子邮件。问题是当用户没有填写所有列时,即从 1 到 10 编号。我的意思是不要用 10 封电子邮件填写表格。如果这没有发生,在最后一封电子邮件中,宏会重复多次,直到完成 10 封电子邮件或好像要发送到 10 封电子邮件。我希望你能理解我。

所以我想在这个宏的某处放置一个语句来跳过编号从 1 到 10 的列中没有电子邮件地址的空白单元格,并完成发送电子邮件的操作。

在此处输入图像描述

标签: excelvbasendmailskip

解决方案


我发现很难理解您的代码。这是我的意思。请阅读我的评论。它们的编写没有利于理解代码中已经存在的内容。

Option Explicit

Sub Enviar_Correo2()
    ' Enviar_Correo2
    ' Enviar por correo electrónico automáticamente el resumen ejecutivo del trabajo
    ' de los Equipos de Mejora Continua

    Dim i As Integer
    Dim Recipient As String

    ' Seleccionamos el rango de celdas a enviar Select
    ' it's not clear why this range is being selected
    ThisWorkbook.Sheets("Resumen ejecutivo").Range("$A$1:$K$52").Select

    For i = 0 To 9
        With ThisWorkbook.Sheets("Configuraciones iniciales")
            ' assign the value of B19 to B28 as recipient
            Recipient = Trim(.Cells(19 + i, "B").Value)
            ' skip the following if the cell is blank
            If Len(Recipient) Then
                ' El valor de i se pone en la celda F18 para que con BUSCARV
                ' se devuelvan los datos correspondientes al ID.
                ' not clear why you would want to write a different number to the
                ' same cell on each loop
                .Range("F18").Value = i + 1

                'Mostramos la sección para enviar correo.
                ActiveWorkbook.EnvelopeVisible = True
                'Llamamos al envío...
                With ActiveSheet.MailEnvelope
                    .Item.To = Recipient
                    '.Item.cc = "correo1@dominio.com" 'con copia a...
                    '.Item.bcc = "correo2@dominio.com" 'con copia oculta a...
                    .Item.Subject = "PROPUESTA DE TEMAS PARA APROBACIÓN GERENCIAL"
                    .Introduction = "Estimados Srs.: Por medio de la presente nos permitimos plantear " & _
                                    "a Ustedes los siguientes tres temas seleccionados por nuestro " & _
                                    "Equipo de Mejora Continua, con la finalidad que nos asignen uno " & _
                                    "para iniciar su estudio. Estamos seguros que el trabajo a realizar " & _
                                    "sera un aporte valioso para nuestra empresa."
                    .Item.Send
                End With
            End If
        End With
    Next i
End Sub

我认为上面的代码应该不会比原来的代码差,但它可能包含一些想法,可以帮助你构建你真正想要的东西。


推荐阅读