Barra de progreso (Progressbar) Access - Necesito poner una para copia de carpetas o respaldo.

Tengo este código (el cual me ayudaron aquí a crearlo) y necesito ponerle una barra de progreso para ver el avance del copiado. Les agradezco de antemano.

Private Sub Commande1_Click()
Dim CarpetaOrigen As String, CarpetaDestino As String
'Indicamos los nombres y ubicaciones de la Carpeta a COPIAR...
CarpetaOrigen = "C:\BaseDatos"
CarpetaDestino = "C:\RespaldoBaseDatos\BaseDatosRespaldos" & "_" & Format(Now(), "dd_mm_yyyy_hh_mm")
'OJO!!!: no podremos crear una carpeta ya existente!!!

'con este objeto proporcionamos acceso al sistema de archivos de nuestro equipo...
Dim FSO As Object
Set FSO = CreateObject("Scripting.FileSystemObject")

'controlamos que no hayamos terminado nuestra ruta con barra invertida \
'ni en la Carpeta Vieja
If Right(CarpetaOrigen, 1) = "\" Then
CarpetaOrigen = Left(CarpetaOrigen, Len(CarpetaOrigen) - 1)
End If
'ni en la Nueva
If Right(CarpetaDestino, 1) = "\" Then
CarpetaDestino = Left(CarpetaDestino, Len(CarpetaDestino) - 1)
End If
'También verificamos que existe la carpeta original a mover...
If FSO.FolderExists(CarpetaOrigen) = False Then
MsgBox "EH!!!, esta " & CarpetaOrigen & " no existe!!!"
Exit Sub
End If
'y que NO existe el destino....
If FSO.FolderExists(CarpetaDestino) = True Then
MsgBox "Atención!!! La Carpeta" & CarpetaDestino & " ya existe..." & vbCrLf & _
", y NO es posible desplazarla a una Carpeta ya existente!!!"
Exit Sub
End If

'Momento para copiar y pegar la ubicación de la Carpeta.
'Empleamos el método CopyFolder para copiar de un lugar a otro...
FSO.CopyFolder Source:=CarpetaOrigen, Destination:=CarpetaDestino

'mensaje de confirmación

MsgBox "Hemos copiado la Carpeta " & CarpetaOrigen & " y pegado en la nueva ubicación " & CarpetaDestino

1 respuesta

Respuesta
3

Te digo como puedes simularla. Supongamos que tengo un formulario donde le añado un cuadro de texto llamado contador, que debería estar oculto, pero que dejo a la vista para que veas como va aumentando. También para que se inicie el proceso le pongo un botón, luego te digo donde debes poner la instrucción, y por último un control rectángulo, al que he llamado Barra, que sería la barra de progreso, al que le puedes dar el ancho que quieras

Cuando pulso el botón iniciar y van pasando medio segundo, el control contador aumenta una unidad y el rectángulo va aumentando su anchura. Por ejemplo

El código del formulario es

Private Sub Form_Timer()
Contador = Contador + 1
Barra.Width = 0.201 * 567 * Contador
End Sub
Private Sub Iniciar_Click()
Me.TimerInterval = 500
Contador = 1
End Sub

es decir, cuando pulso el botón establezco el intervalo de cronómetro, en mi caso medio segundo(tendrías que hacer pruebas y decidir el intervalo que quieres) Y le asigna al cuadro de Contador el valor 1,. Cuando pasa medio segundo, Contador pasa a valer 2 y multiplica el ancho original de Barra por 2. Al medio segundo siguiente, * 3, * 4, etc.

En tu caso, yo pondría lo de Me.Timerinterval y contador justo encima de la línea

me.timerinterval=500( o lo que decidas)

contador=1

FSO.CopyFolder Source:=CarpetaOrigen, Destination:=CarpetaDestino

me.timerinterval=0

Es decir, que en cuanto empiece a copiar la barra empiece a aumentar, y en el momento que haya copiado se pare.

Y lo de Private Sub Form_timer() lo copias tal cual al formulario

Gracias por tu información y ayuda. Pero fíjate que la instrucción: me.timerinterval=500 y contador=1 (la de inicio del progreso de la barra), comienza a correr hasta que finaliza el copiado de las carpetas, no importa en la línea que la ponga, ya sea antes de la instrucción de copiado (FSO.CopyFolder Source:=CarpetaOrigen, Destination:=CarpetaDestino), al inicio del todo, o después de la instrucción, empieza siempre a correr hasta que termina el copiado de las carpetas. ¿Qué estoy haciendo mal? Sin embargo, la instrucción: me.timerinterval=0 esa si corta el progreso de la barra y no hay problema con ella.

Gracias otra vez por tu ayuda.

¿La barra de progreso no es para ir mostrando el tiempo que tarda en copiar las carpetas?

Sí claro, eso es lo que quiero, pero no sé por qué no empieza cuando empieza a hacer el copiado de carpetas. Como te decía ya que se copiaron las carpetas es cuando aparece la progresión de la barra sin indicar nada realmente.

Lo siento, por más vueltas que le he dado no he conseguido averiguar porqué cuando empieza a copiar detiene el proceso de contar el tiempo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas