Corrección macro

Hola,
Una vez recuro a ti para buscar las soluciones de mis problemas.
Mi consulta es la siguiente:
He encontrado un código por internet concretamente en "elistas" sobre envío de email de varias maneras una hoja todo el libro solo una hoja concreta...
Me funciona perfectamente, mi única duda seria si se puede modificar un poco "adjunto código":
Public Sub Enviar_Hoja()
Application.ScreenUpdating = False
ActiveSheet.Copy
ActiveWorkbook.SendMail "", "Archivo_ anexo", True
ActiveWorkbook.Close False
Application.ScreenUpdating = True
End Sub
Este código copia la hoja activa y la envía como datos adjuntos de un email, a mi me gustaría que se pudiera seleccionar un rango concreto, no toda la hoja, ¿se puede hacer? ¿Cómo?
Gracias por tu tiempo.
Respuesta
1
Creo que te conozco, en mi lista de correo de eListas respondí una pregunta casi igual... te respondo lo mismo, saludos...
Hola a todos...
Claro que es posible, básicamente hay tienes que hacer
Seleccionar el rango a enviar
Copiar el rango a una nueva hoja/libro
Enviar el libro
Por supuesto supongo que esto lo quieres con código, pero antes de hacer código
considera los siguientes puntos...
Un rango puede contener varios objetos (celdas, dibujos, fórmulas, datos,
formatos)
Considera lo que pasa cuando copias información, por ejemplo la información
vinculada, las fórmulas, los formato, por ejemplo el ancho de las columnas no se
copia si solo copias un rango, entre otros detalles
Para pasarlo integro, podrías:
Copiar el libro completo y eliminar lo no necesario
Copiar solo el rango y después los anchos de columna si lo consideras
La macro podría arrancar ANTES de seleccionar o DESPUÉS de seleccionar,
dependiendo de tu gusto y necesidad...
Cuéntanos más detalles y con gusto te ayudamos...
Hola Mauricio,
Efectivamente ya contestaste esta consulta anteriormente en elistas, solo que, no se por que, la respuesta no la vi en su completo, solo el primera parte. Me permito la osadía de enviarte la macro que he desarrollado para que si puedes le ehces un vistazo, no se si esta bien o se puede hacer de otra manera que sea más fácil o más lógica. (Perdona por abusar)
Public Sub Enviar_Tarifa_Cast()
Application.ScreenUpdating = False
'copiar l'informacio en una fulla nova
Sheets.Add.Name = "tarifa castellano"
Sheets("TARIFES").Select
Range("J7:s200").Select
Selection.Copy
Sheets("tarifa castellano").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("TARIFES").Select
Range("J7:s200").Select
Selection.Copy
Sheets("tarifa castellano").Select
Range("A1:j195").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Columns("A:j").EntireColumn.AutoFit
Columns("A:A").ColumnWidth = 18.71
Columns("c:c").ColumnWidth = 4
Columns("h:h").ColumnWidth = 15.25
Columns("G:G").ColumnWidth = 8.14
Rows("2:2").RowHeight = 26
ActiveWindow.Zoom = 80
Sheets("tarifes").Select
ActiveSheet.Shapes("Picture40").Select
Selection.Copy
Sheets("tarifa castellano").Select
Range("i2:i3").Select
ActiveSheet.Paste
Selection.ShapeRange.IncrementLeft -18
Selection.ShapeRange.IncrementTop -21
ActiveSheet.ResetAllPageBreaks
ActiveSheet.PageSetup.PrintArea = "a1:j191"
ActiveWindow.SelectedSheets.HPageBreaks.Add before:=Range("a95")
ActiveWindow.SelectedSheets.VPageBreaks.Add before:=Range("K:K")
With ActiveSheet.PageSetup
.PrintTitleRows = "$2:$3"
.LeftMargin = Application.InchesToPoints(0.02)
.RightMargin = Application.InchesToPoints(0.02)
.TopMargin = Application.InchesToPoints(0)
.BottomMargin = Application.InchesToPoints(0)
.HeaderMargin = Application.InchesToPoints(0)
.FooterMargin = Application.InchesToPoints(0)
.CenterHorizontally = True
.Zoom = 64
End With
Range("a1").Select
'enviar aquesta fulla per e-mail
ActiveSheet.Copy
ActiveWorkbook.SendMail "", "Archivo anexo", True
ActiveWorkbook.Close False
'borrar la fulla nova
Cells.Select
Selection.ClearContents
ActiveWindow.SelectedSheets.Delete
Sheets("tarifes").Range("a5").Select
Application.ScreenUpdating = True
End Sub
Saludos,
David
Te felicito realmente, eres de los pocos usuarios que se toman la molestia de tener iniciativa, la mayoría tan solo espera que les resuelvas sus problemas, tu código así a simple vista lo veo bien, y si te funciona entonces esta excelente, solo algunas lineas que se podrían hacer de varias a una, pero es tan pequeña que así la puedes dejar, si te interesa ver como reducir el numero de lineas de código y que siga haciendo lo mismo, esto, solo como deseo de saber un poco más, finaliza esta pregunta y enviame tu macro a mi correo y te la devuelvo con la optimización y los comentarios pertinentes...
Saludos
Mauricio
Mbs ARROBA inbox PUNTO net

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas