Ejecutar macro solo en una hoja del libro
Tengo un excel con una macro que consiste en darle a un boton, y se envía el texto de esa página en un mail (a unos destinatarios y un asunto concreto, que tu previamente has configurado en la macro).
El problema es que yo copio esa hoja, con ese "botón", de tar manera que tengo muchas hojas en ese libro con "botón", pero cuando le doy a ese boton en la hoja 5, por ejemplo... En lugar se sacar un sólo mail con el contenido de la hoja 5, me salen 5 mails con los contenidos de la hoja 1... 2... 3... 4... Y5...¿Sabes cómo puedo hacer para que al dar al boton en la hoja 5, solo salga el mail con el contenido de la hoja 5?
Te envío la macro (yo no entiendo mucho de esto pero creo que aquí hay más de una...)
Sub Send_Row()
' Don't forget to copy the function RangetoHTML in the module.
' Working in Office 2000-2007
Dim OutApp As Object
Dim OutMail As Object
Dim cell As Range
Dim rng As Range
Dim Ash As Worksheet
Set Ash = ActiveSheet
On Error GoTo cleanup
Set OutApp = CreateObject("Outlook.Application")
OutApp.Session.Logon
With Application
.EnableEvents = False
.ScreenUpdating = False
End With
For Each cell In Ash.Columns("B").Cells.SpecialCells(xlCellTypeConstants)
If cell.Value Like "?*@?*.?*" And LCase(cell.Offset(0, 1).Value) = "yes" Then
Ash.Range("A1:O100").AutoFilter Field:=2, Criteria1:=cell.Value
With Ash.AutoFilter.Range
On Error Resume Next
Set rng = .SpecialCells(xlCellTypeVisible)
On Error GoTo 0
End With
Set OutMail = OutApp.CreateItem(0)
On Error Resume Next
With OutMail
.To = cell.Value
.Subject = "Grades Aug"
.HTMLBody = RangetoHTML(rng)
.Display 'Or use Send
End With
On Error GoTo 0
Set OutMail = Nothing
Ash.AutoFilterMode = False
End If
Next cell
cleanup:
Set OutApp = Nothing
With Application
.EnableEvents = True
.ScreenUpdating = True
End With
End Sub
El problema es que yo copio esa hoja, con ese "botón", de tar manera que tengo muchas hojas en ese libro con "botón", pero cuando le doy a ese boton en la hoja 5, por ejemplo... En lugar se sacar un sólo mail con el contenido de la hoja 5, me salen 5 mails con los contenidos de la hoja 1... 2... 3... 4... Y5...¿Sabes cómo puedo hacer para que al dar al boton en la hoja 5, solo salga el mail con el contenido de la hoja 5?
Te envío la macro (yo no entiendo mucho de esto pero creo que aquí hay más de una...)
Sub Send_Row()
' Don't forget to copy the function RangetoHTML in the module.
' Working in Office 2000-2007
Dim OutApp As Object
Dim OutMail As Object
Dim cell As Range
Dim rng As Range
Dim Ash As Worksheet
Set Ash = ActiveSheet
On Error GoTo cleanup
Set OutApp = CreateObject("Outlook.Application")
OutApp.Session.Logon
With Application
.EnableEvents = False
.ScreenUpdating = False
End With
For Each cell In Ash.Columns("B").Cells.SpecialCells(xlCellTypeConstants)
If cell.Value Like "?*@?*.?*" And LCase(cell.Offset(0, 1).Value) = "yes" Then
Ash.Range("A1:O100").AutoFilter Field:=2, Criteria1:=cell.Value
With Ash.AutoFilter.Range
On Error Resume Next
Set rng = .SpecialCells(xlCellTypeVisible)
On Error GoTo 0
End With
Set OutMail = OutApp.CreateItem(0)
On Error Resume Next
With OutMail
.To = cell.Value
.Subject = "Grades Aug"
.HTMLBody = RangetoHTML(rng)
.Display 'Or use Send
End With
On Error GoTo 0
Set OutMail = Nothing
Ash.AutoFilterMode = False
End If
Next cell
cleanup:
Set OutApp = Nothing
With Application
.EnableEvents = True
.ScreenUpdating = True
End With
End Sub
1 respuesta
Respuesta de neicos
1