VBA WScript.Shell copia el archivo de una carpeta a otra carpeta en función de la ruta de la celda o el nombre de archivo.
Quiero hacerlo con vba wscript.shell porque la copia de archivos es más rápida y quiero copiar archivos basados en la ruta o nombre de archivo en la celda de Excel basándome en la selección en la columna “E” y mostrar la carpeta de destino usando “msoFileDialogFolderPicker”.
Tengo código de muestra pero necesito cambiarlo.
Sub copiar()
xDFileDlg As FileDialog
xDPathStr As Variant
sn = Filter(Split(CreateObject("wscript.shell").exec("cmd /c dir C:\copy*.* /b /s").stdout.readall, vbCrLf), "\")
'For j = 0 To UBound(sn)
'If DateDiff("d", FileDateTime(sn(j)), Date) > 30 Then sn(j) = ""
'Next
sn = Filter(sn, "\")
For j = 0 To UBound(sn)
FileCopy sn(j), "C:\destcopy" & Mid(sn(j), 2)
Next
Set xDFileDlg = Application.FileDialog(msoFileDialogFolderPicker)
xDFileDlg.Title = "Por favor, seleccione la carpeta de destino:"
If xDFileDlg.Show <> -1 Then Exit Sub
xDPathStr = xDFileDlg.SelectedItems.Item(1) & "\"
End Sub
Gracias.
Roy.
davy.ai
Para copiar archivos basados en la ruta o el nombre del archivo especificados en una celda de Excel y mostrar la carpeta de destino usando
msoFileDialogFolderPicker
con VBAwscript.shell
, puede modificar el código de muestra de la siguiente manera:Lo que hace este código es:
ActiveCell.Row
y el métodoRange
.Verificar si el archivo existe en la ruta seleccionada.
Abrir el cuadro de diálogo
msoFileDialogFolderPicker
para permitir al usuario seleccionar la carpeta de destino.Copiar el archivo seleccionado a la carpeta de destino usando el método
FileCopy
.Tenga en cuenta que este código supone que la ruta y el nombre de archivo están en las columnas E y F, respectivamente. Es posible que deba ajustar el código para que coincida con el diseño específico de su hoja de cálculo.
¡Espero que esto ayude!