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

Añade tu respuesta

Haz clic para o