UniversoExcelForo

Respuesta a consultas.
Fecha de creación: 09.Abril.2012

Fundadores: Wibly,Tyno,Servando,Sakkar,Rosendo2,RMaximo,Railar,Mcoronel,Ioyama,Igtelo,Hugotron,Drochar,Dedos,Alberto,Adolfo

No se pueden hacer consultas de Excel o VBA por mensaje privado.
Utiliza el botón buscar del foro y te ahorras tiempo para obtener "ayuda".

No estás conectado. Conéctate o registrate

Ver el tema anterior Ver el tema siguiente Ir abajo  Mensaje [Página 1 de 1.]

ordazs1


Hola,

tengo una duda tengo una macro  para enviar por mail cada una de las hojas activas de un archivo como valores, solo que ahora me indica un error al ejecutar la macro podrian apoyarme a detectar el error, gracias.


Sub WorksheetLoop2()
'Application.ScreenUpdating = False
Application.DisplayAlerts = False
    'Seleccionamos libro actual y se genera un loop para que ejecute la macro en cada hoja
    Dim Current As Worksheet
        For Each Current In Worksheets
        Dim attBook$
        attBook = Environ("temp") & "\" & Current.[a3] & ".xlsx"     ************* con el depurador detecte que el error es en esta linea
    
      Current.Copy
    Cells.Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
            
        If Dir(attBook) <> "" Then Kill attBook
        With ActiveWorkbook
    .SaveAs Filename:=attBook, FileFormat:=51
        .Close False
          End With
                  
        Dim OutApp As Object
        Dim OutMail As Object
        Set OutApp = CreateObject("Outlook.Application")
        Set OutMail = OutApp.CreateItem(0)
        With OutMail
            .To = Current.[a1]
            .CC = Current.[a2]
            .BCC = ""
            .Subject = Current.[a3]
            .Body = Current.[a4]
            .Attachments.Add attBook
           .send
        End With
                           
        Set OutMail = Nothing
        Set OutApp = Nothing
   
   Next
     
     MsgBox "Informes de ventas 2016 generados y enviados""  " & Date
                            
     'Application.ScreenUpdating = True
            
End Sub

tyno


Hola ordazs1
¿que hay en A3? que clase de datos tiene esa celda? 
Lo que veo que se recorren las hojas de tu libro, quizás alguna de las Hojas en A3 no tiene nada o tenga algún dato no se admita.
Prueba de ingresar esto al principio del código:

Sub WorksheetLoop2()
On Error Resume Next '<<<<<<<<<<<<<<<<<<<<

No es una solución puntual a tu problema, pero esto lo que hace es omitir los errores de ejecución de macro. Por una lado sirve porque quizás los resultados que deseamos se obtienen de todas maneras aunque exista un error en la ejecución de la macro pero por otro lado puede ser que la macro no de ningún resultado.

Saludos

3RESUELTO Hola Tyno¡¡ el 08/07/16, 01:29 pm

ordazs1


Hola Tyno¡¡
Agradezco tu apoyo ya integre el dato que me indicas a mi macro, en las celdas A3,A4 tine valores que trae de una tabla dimanica, al ejecutar la macro con el aporte que me diste si que deja de aparecer el erro solo ahora  corre la macro pero saca ahora un cuadro de texto que indica:

las siguientes caracteristicas no se pueden guardar en libros sin macros:
-Proyecto de VB
Para guardar  un archivo con estas caracteristicas haga clic en NO y  acontinuacion elija un tipo de archivo habilitado para macros...

lo extraño es que esta guardado en un libro hablitado para macros.

tendras algun comentario al rspecto 

nota: lo que intento es enviar cada una de las hojas activas y el la cenda A1: esta la direccion de mail principal a enviar, en A2:esta otra direccion a la que copia, en A3 esta el nombre del archivo a enviara y en el A4 esta un texto que sera el cuerpo del correo lo que pretendo es enviar solo los valores de la pagina y que la macro recorra cada hoja y enviae a los datos de las celdas A1 Y A2,  Agradezco tu apoyo 

un saludo.






Sub WorksheetLoop2()

On Error Resume Next

Application.ScreenUpdating = False
    'Seleccionamos libro actual y se genera un loop para que ejecute la macro en cada hoja
    Dim Current As Worksheet
    
    For Each Current In Worksheets
        Dim attBook$
        attBook = Environ("temp") & "\" & Current.[a3].Value & ".xlsx"
        
    Current.Copy
    Cells.Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
            
        If Dir(attBook) <> "" Then Kill attBook
        With ActiveWorkbook
        .SaveAs Filename:=attBook, FileFormat:=51
        .Close False
        End With
             
    'Una vez generado el reporte y guardada lo hoja temporalmente generemos el mail
        Dim OutApp As Object
        Dim OutMail As Object
        Set OutApp = CreateObject("Outlook.Application")
        Set OutMail = OutApp.CreateItem(0)
        With OutMail
            .To = Current.[a1]
            .CC = Current.[a2]
            .BCC = ""
            .Subject = Current.[a3]
            .Body = Current.[a4]
            .Attachments.Add attBook
    'Si el proceso no detecta mail en la celda A1 regresa un mail al emisor con el Error para que el mail sea enviado nuevamente
                         
            If .To = Empty Then
               .To = "  mail "
               .Body = "Error, no se ha asignado un mail para "" " & Current.[a3]
          End If
               .send
          End With
                
        
        Set OutMail = Nothing
        Set OutApp = Nothing
   'Generamos un aviso de que el proceso termino
    Next
    MsgBox "Informes de ventas 2016 generados y enviados""  " & Date
          
     Application.ScreenUpdating = True
    
    
End Sub

tyno


Ok.
No estoy completamente seguro, pero me parece que el proceso de esa macro lo que hace es guardar temporalmente el archivo que va a enviar y  al guardarlo lo hace como una archivo común de Excel  ".xlsx", esto lo digo por esta linea:  attBook = Environ("temp") & "\" & Current.[a3].Value & ".xlsx", pero resulta que tu archivo si es para macro.
Solo por probar para ver si ahí esta el problema. Guarda una copia tu archivo como libro Excel 97-2003 para probar en este y en la linea donde dice  attBook = Environ("temp") & "\" & Current.[a3].Value & ".xlsx" cambia ese .xlsx por .xls
La idea es trabajar todo como formato de Excel 97-2003.
Bueno el tema es que no se si en tu archivo tienes funciones  que no son compatibles con Excel 97-2003, pero si da para hacer esta prueba omite la falta de compatibilidad.

Y comentas si funciona

Saludos

ordazs1


he probado con lo que me comentas y un para de cambios mas y no funciona, de echo todo corre perfecto solo por la ventana que muestra.

jhon1904


hola ordazs1, tyno un abrzo

sube el archivo de ejemplo asi te pueden ayudar mejor

saludos,

Igtelo


Se da por resuelto y se cierra por abandono.

Ignacio Téllez

Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje [Página 1 de 1.]

Permisos de este foro:
No puedes responder a temas en este foro.