Barra de progreso en ejecución de macro
Solicitando su apoyo para adaptar una barra de progreso a la siguiente macro que se ejecuta dando clic a un botón y realiza lo siguiente: primero imprime, luego convierte en pdf la hoja y la guarda en una carpeta y finalmente el pdf lo envía por correo. El proceso tarda aproximadamente 3 minutos desde ya muchas gracias.
Private Sub CommandButton6_Click()
Dim SiNo As String
SiNo = MsgBox("Estás seguro de Imprimir?", vbYesNo + vbQuestion, "CONFIRMA")
If SiNo <> vbYes Then Exit Sub
Worksheets("ReporteSalidas").Select
Range("A1:N48").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=2, Collate:=True
Sheets("Menu").Select
Range("A2").Select
f = Format(Date, ("dd-mm-yy")) 'Formato de Fecha. 'Day(Now()) 'Incluir en nombre
h = VBA. Format(VBA. Time, "hh-mm") 'Formato de hora 'incluir en nombre
Nombre = "Salidas" 'Nombre para el archivo
Ruta = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\Control\Reporte de Salidas\"
Worksheets("ReporteSalidas").Select
fila = Range("N65536").End(xlUp).Row
Rango2 = Range(Selection, Cells(fila, 14)).Select 'rango inicio y final selecionado
Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Ruta & Nombre & " " & f & " a las " & h, _
quality:=xlQualityStandard, includedocproperties:=True, ignoreprintareas:=False, _
openafterpublish:=False 'False no abre despues de guardado True si
MsgBox "Se ha guardado a formato PDF en: " & Ruta & Nombre & " " & f & " a las " & h & ".pdf", vbInformation
'Creación del archivo temporal
RutaTemporal = Environ$("temp") & "\"
NombreTemporal = ActiveSheet.Name & Nombre & " " & f & " a las " & h & ".pdf"
RutaCompleta = RutaTemporal & NombreTemporal
On Error GoTo Err
ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=RutaCompleta, _
quality:=xlQualityStandard, _
includedocproperties:=True, _
ignoreprintareas:=False, _
openafterpublish:=False
'Información para el correo
Set Email = New CDO.Message
Remitente = Hoja7.Range("B2").Value
pass = Hoja7.Range("B3").Value
Destinatario = Hoja7.Range("B4").Value
Correo_copia = Hoja7.Range("B5").Value
Oculto_Correo = Hoja7.Range("B6").Value
Asunto = "Reporte de Ventas"
Cuerpo = "Hola, Buenas tardes anexo reporte de Ventas"
Email.Configuration.Fields(cdoSMTPServer) = "smtp.gmail.com"
Email.Configuration.Fields(cdoSendUsingMethod) = 2
With Email.Configuration.Fields
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = CLng(465)
.Item("http://schemas.microsoft.com/cdo/" & "configuration/smtpauthenticate") = Abs(1)
.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 30
.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = Remitente
.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = pass
.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
End With
With Email
.To = Destinatario
.From = Remitente
.Subject = Asunto
.Cc = Correo_copia
.BCC = Oculto_Correo
.TextBody = Cuerpo
.AddAttachment RutaCompleta
.Configuration.Fields.Update
On Error Resume Next
.Send
End With
If Err.Number = 0 Then
MsgBox "El correo ha sido enviado con éxito", vbInformation, "Confirmación"
Else
MsgBox "Se produjo el siguiente error: " & vbNewLine & _
Err.Description, vbCritical, "Error No. " & Err.Number
End If
On Error GoTo 0
Kill RutaCompleta
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
Exit Sub
Err:
MsgBox Err.Description, vbCritical + vbOKOnly, Err.Number
End Sub