Access guardar y renombrar documento a través de un botón en formulario

A ver si soy capaz de explicarme.

Quiero hacer en el formulario lo siguiente, tendría tres botones "Solicitud" "Expediente" y "Tear" al pulsar por ejemplo el botón "Solicitud" que se me abra el navegador de windows y busco un documento que puede llamarse de cualquier manera (puede ser pdf, jpg, etc) y que al darle a guardar se guardarse en la carpeta C:\Solicitudes nombrando el documento con el nombre: CIF345678_Solicitud. Teniendo en cuenta que el CIF lo cogería del campo CIF que hay en la tabla que alimenta el formulario y Solicitud lo pondría por defecto porque he pulsado el botón "Solicitud"

Cuando pulsara el botón Expediente haría lo mismo que se guardarse en la carpeta C:\Expedientes pero renombrando al documento como CIF345678_Expediente

Y cuando pulsara el botón Tear haría lo mismo que se guardarse en la carpeta C:\Tear pero renombrando al documento como CIF345678_Tear

3 respuestas

Respuesta
1

Name (Instrucción)

Cambia el nombre de un archivo, directorio o carpeta.

Sintaxis

Name nombre_ruta_antigua As nombre_ruta_nueva

La sintaxis de la instrucción Name consta de las siguientes partes:

...

Respuesta
1

Te mando un ejemplo vía Email( suponiendo que sigas manteniendo el mismo)

Respuesta
1

Le preparé este ejemplo, aunque no me queda claro si está trabajando con un formulario continuo, la idea es ilustrar el proceso, solo es cuestión de adaptarlo.

FORMULARIO (Su caso puede ser un formulario continuo)

Fijo 3 botones a los cuales les asignó los nombres; Solicitud, Expediente y Tear. No confundir con los títulos de cada botón, estos nombres se requieren para hacer referencia al control en el código y así hacer el código más corto y legible.

Cuando hago cli en el botón "Solicitud" se abre el explorador de archivos para elegir el archivo, como muestra la imagen siguiente.

EXPLORADOR DE ARCHIVOS

En el ejemplo selecciono el archivo "ArribosPesca.acdb" (base de datos Access) hago doble clic y se copia en D:\Solicitud\CIF345678_Solicitud. Tomé la unidad D: pero se puede cambiar por C:. Si el proceso es correcto obtengo este mensaje:

Y en la carpeta D:\Solicitud\CIF345678_Solicitud queda así:

El ejemplo consta de una función y un procedimiento a nivel de formulario. Este es el código

FUNCIÓN PARA ELEGIR EL ARCHIVO

Function selectArchivo() As String
    'Creamos un control de errores
    On Error GoTo sol_err
    'Declaramos las variables
    Dim vFD As Object 'vFD=FileDialog
    Dim vRutaIni As String
    vRutaIni = Application.CurrentProject.Path
    Set vFD = Application.FileDialog(msoFileDialogFilePicker)
    With vFD
        .Title = "Seleccione el archivo "
        .ButtonName = "A seleccionado el Archivo"
        .InitialView = msoFileDialogViewSmallIcons
        .InitialFileName = vRutaIni
         .Filters.Add "Todos los archivos", "*.*"
        If .Show = -1 Then
            selectArchivo = CStr(.SelectedItems.Item(1))
        Else
            MsgBox "Ha cancelado la selección", vbOKCancel Or vbExclamation Or vbMsgBoxSetForeground, "Access"
            Exit Function
        End If
    End With
Salida:
    Exit Function
sol_err:
    MsgBox "Se ha producido un error: " & Err.Number & " - " & Err.Description
    Resume Salida
End Function

PROCEDIMIENTO PARA COPIAR EL ARCHIVO ELEGIDO

Sub renombra()
 On Error GoTo hay_error
    Dim fs
    Dim f
    Dim strExtension As String
    Dim strElegir As String
    Dim strCIF As String
    Dim ctrl As Control
    Dim strCarpetaRenombra As String
    strCIF = "CIF345678" ' Si los botones están en un formulario continuo puede
                         ' toma strCIF=Me.CIF el ejemplo tomé solo como prueba
    strElegir = selectArchivo()
    If Len(strElegir) = 0 Then
       Exit Sub
    End If
    Set ctrl = Screen.ActiveControl
    Set fs = CreateObject("Scripting.FileSystemObject")
    f = fs.GetBaseName(strElegir)
    strExtension = fs.GetExtensionName(strElegir)
    Select Case ctrl.Name
       Case "Solicitud"
            strCarpetaRenombra = "D:\Solicitud\" & strCIF & "_" & "Solicitud." & strExtension
       Case "Expediente"
            strCarpetaRenombra = "D:\Expedientes\" & strCIF & "_" & "Expediente." & strExtension
       Case "Tear"
            strCarpetaRenombra = "D:\Tear\" & strCIF & "_" & "Tear." & strExtension
    End Select
    FileCopy strElegir, strCarpetaRenombra
   If Err.Number = 0 Then
     MsgBox "Archivo procesado OK", vbInformation, "Le cuento.."
   End If
hay_error_exit:
   Exit Sub
hay_error:
    MsgBox "Ocurrió el error " & Err.Number & vbCrLf & Err.Description, vbCritical, "Error..."
    Resume hay_error_exit
End Sub

Bueno ya es cuestión de adaptarlo a sus necesidades.

Se me olvidó indicarle como llamar el procedimiento renombra desde cada botón. Esta es la instrucción para cada botón y de ir en el evento Al hacer clic.

Private Sub Expediente_Click()
  Call renombra
End Sub
Private Sub Solicitud_Click()
  Call renombra
End Sub
Private Sub Tear_Click()
  Call renombra
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas