我正在开发一个要在 Excel 中创建的 EDMS 系统。有人能解释一下是否可以通过 Excel 将文件直接拖放到文件夹路径吗?我的项目经理可以从此功能中受益,而不必一直访问文件夹。
谨致问候,塞巴斯蒂安
答案1
Sub MoveFiles()
Dim xFd As FileDialog
Dim xTFile As String
Dim xExtArr As Variant
Dim xExt As Variant
Dim xSPath As String
Dim xDPath As String
Dim xSFile As String
Dim xCount As Long
Set xFd = Application.FileDialog(msoFileDialogFolderPicker)
xFd.Title = "Please Select Original Folder:"
If xFd.Show = -1 Then
xSPath = xFd.SelectedItems(1)
Else
Exit Sub
End If
If Right(xSPath, 1) <> "\" Then xSPath = xSPath + "\"
xFd.Title = "Please Select Destination folder:"
If xFd.Show = -1 Then
xDPath = xFd.SelectedItems(1)
Else
Exit Sub
End If
If Right(xDPath, 1) <> "\" Then xDPath = xDPath + "\"
xExtArr = Array("*.xlsm*", "*.Docx")
For Each xExt In xExtArr
xTFile = Dir(xSPath & xExt)
Do While xTFile <> ""
xSFile = xSPath & xTFile
FileCopy xSFile, xDPath & xTFile
Kill xSFile
xTFile = Dir
xCount = xCount + 1
Loop
Next
MsgBox "Total number of moved files is: " & xCount, vbInformation, "Move File(S)"
End Sub
怎么运行的:
- 将此代码复制并粘贴为标准模块。
- 运行宏。
- 它打开资源管理器并提示您选择原始(源)文件夹。
- 选择文件夹并按 OK。
- 它再次提示您选择目标文件夹。
- 按“确定”后,您很快就会收到一个消息框,提示您已复制了多少个文件。
笔记:
- 此行是可编辑的
Array("*.xlsm*", "*.Docx")
,您可以File extensions
根据需要用其他内容替换。