vba的Name不仅可以重命名文件,还可以用作移动文件,比如以下代码:
Sub 移动文件() Name "D:\VBA\新建 XLSX 工作表.xlsx" As "D:\新位置\新建 XLSX 工作表.xlsx" End Sub
以上代码,就是将“VBA”文件夹下的“新建 XLSX 工作表.xlsx”移动到“新位置”文件夹下。但要注意的以下几点:
移动的文件必须处于未打开的状态,否则会报错“路径/文件访问失败”;
移动到的新路径必须存在,否则会报错“文件未找到”,比如以上代码如果D盘中没有“新位置”这个文件夹就会报错;
移动到的新路径不能有同名文件,否则会报错“文件已存在”。
如果想要省略路径和文件名的填写,防止写错,可以加入文件对话框选择文件和选择存放位置,代码如下:
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我的个人图书馆查看。
联系客服