Jak mogę użyć obiektu FileSystemObject do „Kopiuj i zmień nazwę”
UżywającFileSystemObject w VB / VBA (lub, jak sądzę, w rodzimych połączeniach VBA), jak mogę:
Kopiuj folderZmień nazwę folderuWięc coś w stylu:
mFSO.CopyAndRename(targetFolder, copyDirectory, copyFolderName)
Zasadniczo zrobiłem to sam, ale wolałbym bardziej czyste wywołanie metody, takie jak powyższe (iCopyFolder
metoda). Wydaje się, że to dużo kodu i wiele potencjalnych punktów awarii ...
'
''requires reference to Microsoft Scripting Runtime
Public Function CopyDirectory(ByVal p_copyDirectory As String, p_targetDirectory As String, Optional p_newName As String = "") As Boolean
CopyDirectory = False
Dim m_fso
Set m_fso = New FileSystemObject
Dim mFolder, mNewFolder
If Not Me.DoesPathExist(p_copyDirectory) Then
Exit Function
Else
On Error GoTo errHandler
Set mFolder = m_fso.GetFolder(p_copyDirectory)
mFolder.Copy p_targetDirectory, False
'rename if a "rename" arg is passed
If p_newName <> "" Then
If DoesPathExist(p_targetDirectory & mFolder.Name) Then
Set mNewFolder = m_fso.GetFolder(p_targetDirectory & mFolder.Name)
mNewFolder.Name = "test" & CStr(Rnd(9999))
Else
End If
End If
CopyDirectory = True
On Error GoTo 0
Exit Function
End If
errHandler:
Exit Function
End Function