打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
vba使用文件对话框移动文件

vba的Name不仅可以重命名文件,还可以用作移动文件,比如以下代码:

Sub 移动文件()
Name "D:\VBA\新建 XLSX 工作表.xlsx" As "D:\新位置\新建 XLSX 工作表.xlsx"
End Sub

以上代码,就是将“VBA”文件夹下的“新建 XLSX 工作表.xlsx”移动到“新位置”文件夹下。但要注意的以下几点:

  1. 移动的文件必须处于未打开的状态,否则会报错“路径/文件访问失败”;

  2. 移动到的新路径必须存在,否则会报错“文件未找到”,比如以上代码如果D盘中没有“新位置”这个文件夹就会报错;

  3. 移动到的新路径不能有同名文件,否则会报错“文件已存在”。

如果想要省略路径和文件名的填写,防止写错,可以加入文件对话框选择文件和选择存放位置,代码如下:

Sub 使用文件对话框移动文件()
'移动文件的选择
Set FolderDialogObject = Application.FileDialog(msoFileDialogOpen)  '新建一个文件对话框对象,允许用户选择一个文件
With FolderDialogObject '配置对话框
.Title = "请选择要移动的文件"
.InitialFileName = "C:\"
End With
FolderDialogObject.Show '显示对话框
Set paths = FolderDialogObject.SelectedItems    '获取选择对话框选择的文件
file_fullname = paths(1)       '返回文件路径+名称

'获取文件名
Split_file_fullname = Split(file_fullname, "\") '将文件路径+名称按“.”拆分
final_Number = UBound(Split_file_fullname) '根据拆分数组的最大下标,识别最后一个“\”在文件路径+名称第几位(序号)
new_file_fullname = Application.Substitute(file_fullname, "\", "?", final_Number) '将最后的“\”,替换成“?”作为特殊标记,以防被路径名中的其它“\”干扰
Location = InStr(new_file_fullname, "?")  '判断"?"在文件路径+名称中的位置
file_name = Mid(new_file_fullname, Location + 1, Len(new_file_fullname) - Location) '截取文件路径+名称中“?”后的内容,得到文件名

'存放位置的选择
Set FolderDialogObject = Application.FileDialog(msoFileDialogFolderPicker)  '新建一个文件对话框对象,允许用户选择文件夹
With FolderDialogObject '配置对话框
.Title = "请选择文件要存放的位置"
.InitialFileName = "C:\"
End With
FolderDialogObject.Show '显示对话框
Set paths = FolderDialogObject.SelectedItems    '获取选择对话框选择的文件夹
save_path = paths(1)       '返回存放路径

'移动文件        
Name file_fullname As save_path & "\" & file_name
End Sub
以上内容对您有帮助可以分享或转藏,避免以后找不到。想要了解更多VBA相关知识,欢迎到http://moqingyan.360doc.com我的个人图书馆查看。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
EXCEL如何使用VBA打开相对路径下的文件或文件夹?
你必将碰到的巨崩溃的问题,Excel复制粘贴时,突然提示“不同单元格格式太多“,我快疯了...
078.取得一个文件的路径
用VBA打开、关闭、新建、保存和删除Excel工作簿 | VBA实例教程
Python操作Excel
VBA关于文件路径和文件相关操作的类 - VBA教程 - 智能Excel - Powered by Discuz!
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服