Copiar archivo .xlsm con vba

Quiero copiar un archivo .xlsm que tengo diseñado pero que todos los meses se ocupa, entonces quiero que se pida ingresar el nombre del archivo y luego copio el que ya existe y lo guardo con el nombre ingresado en un directorio X

1 Respuesta

Respuesta
1

Como estás en www.programarexcel.blogspot.com encontrarás una serie de ejemplos que pues descargar y adaptar a lo que necesitas.

Con el siguiente código se puede crear un archivo

ActiveWorkbook.SaveAs Filename:="C:\Users\Mi Cuenta\Documents\Importa Percepciones IVA a SIAP.txt", FileFormat:=xlTextPrinter, CreateBackup:=False

En el ejemplo que sigue se selecciona donde gaurdarlo, busca en un determinado directorio si la carpeta existe encaso negativo crea una carpeta del año en curso, una vez realizado esto busca si dentro de esa carpeta existe una con el mes del informe, en caso negativo crea una, una vez realizado verifica si existe una carpeta por sucursal, en caso negativo crea una dentro de ella, luego se copia el archivo creado que lo puedes hacer con el cófigo que paso más abajo

Private Sub BuscayCreaCarpeta()
Dim mes1 As String
Dim mes, año As Integer
'Estabezco si la carpeta existe
año = Year(Date)
mes = Month(Date)
'Determino el nombre de la subcarpeta que va dentro de la carpeta año, hay que tener en cuenta que los informes se
'sacan al mes siguiente, en caso de ser diciembre deber{ia
tenerse en cuenta que se saca en enero del año que sigue
'por ende el directorio donde se guardan los datos es el del año anterior que ya está en teoría creado.
'Se pone como nombre de mes el anterior al mes actual, ya que los informes se sacan el mes siguiente
Select Case mes
Case 1
mes1 = "Dic"
Case 2
mes1 = "Ene"
Case 3
mes1 = "Feb"
Case 4
mes1 = "Mar"
Case 5
mes1 = "Abr"
Case 6
mes1 = "May"
Case 7
mes1 = "Jun"
Case 8
mes1 = "Jul"
Case 9
mes1 = "Ago"
Case 10
mes1 = "Sep"
Case 11
mes1 = "Oct"
Case 12
mes1 = "Nov"
End Select
'Se establece que si el mes es diciembre el año donde se guarden los archivos es el actual menos 1 osea el anterior
If mes1 = "Dic" Then
año = año - 1
End If
'Verifica que la carpeta con el nombre del año se encuentre caso contrario la crea
path = "Z:\INFORMES\" & año
If Dir(path, vbDirectory) = "" Then
MkDir path
End If
'Verifica que la carpeta con el nombre del mes se encuentre caso contrario la crea
path1 = "Z:\INFORMES\" & año & "\" & mes1
If Dir(path1, vbDirectory) = "" Then
MkDir path1
End If
'Verifica que la carpeta con el nombre de la sucursal esta dentro mes del informe
path2 = "Z:\INFORMES\" & año & "\" & mes1 & "\Consolidado"
If Dir(path2, vbDirectory) = "" Then
MkDir path2
End If
path3 = "Z:\INFORMES\" & año & "\" & mes1 & "\CC"
If Dir(path3, vbDirectory) = "" Then
MkDir path3
End If
path4 = "Z:\INFORMES\" & año & "\" & mes1 & "\Suc1"
If Dir(path4, vbDirectory) = "" Then
MkDir path4
End If
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas