Como puedo en macros de excel crear una carpeta y guardar varios archivos.

Deseo crear una macro que me pueda ayudar en crear una carpeta y en ella seleccionar varios archivos, tengo el siguiente código pero no lo hace.

Sub Open_Workbook_D()
'Creamos una carpeta en el escritorio
MkDir "C:\Cargar_Documentos"
Dim objFileDialog As Office.FileDialog
Set objFileDialog = Application.FileDialog(MsoFileDialogType.msoFileDialogFilePicker)
With objFileDialog
.AllowMultiSelect = True
.ButtonName = "File Picker"
.Title = "File Picker"
If (.Show > 0) Then
End If
If (.SelectedItems.Count > 0) Then
Call MsgBox(.SelectedItems(1))
End If
End With
End Sub

2

2 respuestas

Respuesta
1

Tu primera línea sí crea una carpeta en el disco "C" y lo siguiente que haces es abrir un cuadro de diálogo que lo que hace es mostrar en un "MsgBox" uno de los archivos que has elegido, nada más.

¿Lo qué quieres es copiar archivo a esa nueva carpeta?

Abraham Valencia

PD: Ojo con algo, al ser, probablemente, el disco "C" el del sistema operativo, solo creara la carpeta si la macro es usada desde un usuario con permisos de administrador.

Hola buenas noches, muchas gracias por tu respuesta, efectivamente lo que deseo o intento hacer es guardar archivos seleccionados en la carpeta previamente creada, mi código no me ayuda.

Prueba así:

Sub CopiarArchivos()
Dim objFileDialog As Office.FileDialog
Dim Archivo As Variant
Dim Ruta As String, NombreArchivo As String
MkDir "C:\Cargar_Documentos"
Let Ruta = "C:\Cargar_Documentos\"
Set objFileDialog = Application.FileDialog(msoFileDialogFilePicker)
With objFileDialog
.AllowMultiSelect = True
.ButtonName = "File Picker"
.Title = "File Picker"
  If .Show = True Then
         For Each Archivo In .SelectedItems
         Debug.Print Archivo
         NombreArchivo = Mid$(Archivo, InStrRev(Archivo, "\") + 1)
         FileCopy Archivo, Ruta & NombreArchivo
         Next Archivo
End If
End With
End Sub

Comentas

Abraham Valencia

Borra la línea del Debug. Print

Abraham Valencia

¡Gracias!  Abranham me es exactamente lo que necesito, pero veo que cuando realizo nuevamente la ejecución sale un error "Error de Ruta" creo que es por que la carpeta ya esta creada, y cuando se realiza nuevamente el proceso la carpeta ya existe, me puede ayudar con este error por favor.

Una forma "rápida" puede ser colocar al inicio "On Error Resume Next". Lo otro es programar reconocer si existe la carpeta antes de toda la rutina.

Comentas

Abraham Valencia

Respuesta

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas