-
2020-11-21 01:39:51
要求:将文件夹1-1.xlsx、文件夹1-1.xlsx移动到文件夹1,依次类推
代码及说明:
Sub 移动文件()
Dim MyFold As Object, MyFile As Object
Dim ipath As String, TargetFolder As String
'获取当前文件夹的路径
ipath = ThisWorkbook.Path &""
'建立文件系统对象变量MyFold
Set MyFold =CreateObject("Scripting.FileSystemObject")
'循环当前路径文件夹下的所有文件
For Each MyFile InMyFold.GetFolder(ipath).Files
'如果文件是.xlsx文件,则
If MyFile.Name Like "*.xlsx"Then
'获取该文件应属文件夹名称,需根据实际的工作表名称修改此句代码,Split()函数返回一个数组,其中包含基于分隔符分割的特定数量的值
TargetFolder = ipath & "" & Split(MyFile.Name, "-")(0)
'文件夹是否存在则新建一个文件夹
If NotMyFold.FolderExists(TargetFolder) Then
MyFold.CreateFolderTargetFolder
End If
'文件夹中已经存在该文件则删除它
If MyFold.FileExists(TargetFolder& "" & MyFile.Name) Then
MyFold.DeleteFile TargetFolder& "" & MyFile.Name
End If
'将文件移动到所属文件夹
MyFile.Move (TargetFolder &"")
End If
Next
Set MyFold = Nothing
End Sub
更多相关内容 -
vba移动文件_VBA操作文件和文件夹
2020-11-21 01:39:48获取当前文件夹的名称(CurDir 函数)当你使用文件时,经常会需要知道当前文件夹的名称,你使用CurDir函数轻易地获取该信息:CurDir([drive])Drive是一可选参数,如果你忽略它,VBA将使用当前驱动(drive)。CurDir函数...获取当前文件夹的名称(CurDir 函数)
当你使用文件时,经常会需要知道当前文件夹的名称,你使用CurDir函数轻易地获取该信息:
CurDir([drive])
Drive是一可选参数,如果你忽略它,VBA将使用当前驱动(drive)。
CurDir函数返回一个文件路径作为Variant(变量)。如果要返回作为字符串(String)的路径的话,就得使用CurDir$(这里的$是字符串的类型声明字符)。让我们在立即窗口里做些练习,练习使用这些函数吧:
1. 打开一个新工作簿,并且切换到VB编辑器窗口2. 激活立即窗口并敲入下述代码:
?CurDir
当你按下回车,VB就显示当前文件夹名称,例如:
C:
如果你有第二个硬盘(或者光驱)的话,你可以获取D盘上的当前文件夹,例如:?CurDir(“D:”)
如果你提供了一个并不存在的驱动字母的话,VB就将显示下述错误信息:“设备不可用”
3. 要储存当前动名称到变量myDrive,可以输入下述指令:
myDrive = Left(CurDir$,1)
当你按下回车键时,VB将当前驱动器的字母储存到变量myDrive
敲入下述指令并回车,可以检查变量myDrive的内容:?myDrive
你还可以将上面的指令改为如下:
myDrive = left(CurDir$,1) & ":"
VB将返回驱动器字母,后面带有一个冒号。
更改文件或文件夹名称(Name 函数)
使用函数Name可以重命名文件或者文件夹,例如:
Name old_pathname As new_pathname
Old_pathname是你想用重命名的文件或文件夹的名称和路径,New_pathname则明确文件或文件夹的新名称和位置。使用函数Name,你可以将一个文件从一个文件夹移动到另外一个文件夹,但是,你不可以移动文件夹。
请在立即窗口里试演该函数(用你文件的实际名称替换示例名称)。这里有些需要考虑的注意事项:
①在New_pathname里的文件名称不要指向已经存在的文件
Name "C:System.1st " As "C:est.txt"
因为文件C:est.txt已经存在于C盘,VB将显示错误信息:“文件已存在”,同样,如果你要重命名的文件不存在的话,就会出现“文件未找到”的错误信息。②如果New_pathname已经存在,并且和Old_pathname不同,函数Name必要时将文件移动到新文件夹并且更改它的名称。
Name "C:System.1st " As "D:est.txt"
因为文件test.txt在D盘的根目录下并不存在,VB将C:System.1st
移动到指定的驱动盘,然而,并不重命名该文件。(本段与上面的内容似乎矛盾,而且未能试验成功,未知是原书失误与否。读者应仔细验证)③如果New_pathname和Old_pathname指向不同的目录,以及提供的文件名称相同,那么Name函数将指定的文件移到新地址,不用更改文件名。
Name "D:est.txt " As "C:DOSest.txt"
上面的指令将test.txt移动到C盘下的DOS文件夹里。技巧:你不能重命名开启的文件
在重命名文件之前,你必须关闭该文件。文件名称里不能包含通配符“*”或者“?”。检查文件或文件夹是否存在(Dir 函数)
Dir函数,返回文件或者文件夹名称,语法如下:
Dir[(pathname[, attributes])]
Dir函数的两个参数都是可选的,pathname是文件或文件夹名称,对于参数attributes,你可以下列常量或者数值之一:
Dir函数常用来检查某个文件或文件夹是否存在,如果不存在,那么就返回空字符串(””)。我们到立即窗口里试验几个Dir函数的练习:
1. 在立即窗口,输入下述指令:
?Dir("C:", vbNormal)
你一旦按下回车键,VB就会返回该文件夹下的第一个文件名。普通文件(vbNormal)就是除隐藏,卷标,目录,文件夹或系统文件之外的任何文件。
要返回当前目录下的其它文件名称的话,就使用不带参数的Dir函数:
?Dir (并且回车)
2. 在立即窗口里输入下列指令,并且在你回车时检查其结果:mfile = Dir("C:", vbHidden)?mfilemfile = Dir?mfilemfile = Dir?mfile
3. 在立即窗口输入下述指令:If Dir("C:stamp.bat") = "" Then Debug.Print "文件未找到。"
因为stamp.bat文件不在C盘上,所以VB就在立即窗口里写下文本信息“文件未找到。”
4. 在立即窗口输入下述语句,可以检查某文件是否存在于某驱动盘上:
If Dir ("C:Autoexec.bat") <>"" Then Debug.Print "该文件不在C盘上。"
函数Dir允许你在文件路径名中使用通配符——星号(*)代表多个字符,问号(?)代表单个字符:
例如,要在WINDOWS文件夹中查找所有配置设置的文件,你可以查找所有的INI文件,如下:
?Dir("C:WINNT*.ini", vbNormal)system.ini?dir WIN.INI?dirWINFILE.INI?dir control.ini?dir EQUIP32.INI?dirsxpwin32.ini
下面显示的过程在立即窗口里写上了确定目录下的文件名称。函数LCase$让文件名称显示为小写字母。
1. 打开一新工作簿,并保存为Chap08.xls
2. 切换到VB编辑器窗口并重命名VBA工程为FileMan
3. 插入新模块,重命名为DirFunction
4. 输入下述VBA过程:Sub MyFiles()Dim mfile As StringDim mpath As Stringmpath = InputBox("Enter pathname,e.g., C:Excel")If Right(mpath, 1) <> "" Then mpath = mpath & ""mfile = Dir(mpath & "*.*")If mfile <> "" Then Debug.Print "Files in the " & mpath _& "folder"Debug.Print LCase$(mfile)If mfile = "" ThenMsgBox "No files found."Exit SubEnd IfDo While mfile <> ""mfile = DirDebug.Print LCase$(mfile)LoopEnd Sub
上面的过程myFiles向用户询问文件路径名。如果该路径结尾没有反斜杠,函数Right就会将反斜杠附加在路径名字符串上。接下来,VB在该确定的文件夹里搜索所有文件(*)。如果没有文件的话,就会有信息显示,如果文件存在,那么文件名就会被写入立即窗口。
5. 在同一个模块里输入另外一个过程:
Sub GetFiles()Dim nfile As StringDim nextRow As IntegernextRow = 1'next row indexWith Worksheets("Sheet1").Range("A1")nfile = Dir("C:", vbNormal).Value = nfileDo While nfile <> ""nfile = Dir.Offset(nextRow, 0).Value = nfilenextRow = nextRow + 1LoopEnd WithEnd Sub
过程GetFiles获取C盘根目录下的所有文件名并且将每个文件名写入工作表。
4.获得文件修改的日期和时间(FileDateTime 函数)如果你的过程需要知道某文件的最后修改的时间的话,可以使用函数FileDateTime:
FileDateTime(文件路径名)
文件路径名是个字符串,明确你要用的文件,并且需要包括驱动和文件夹的名称。该函数返回某文件的日期和时间印记。日期和时间的格式取决于视窗控制面板的原始设置。
我们在立即窗口里来练习使用该函数:1. 在立即窗口里输入:
?FileDateTime("C:config.sys")
回车后,VB返回下述格式的日期和时间 5/4/2001 10:52:00 AM
要分开获取日期和时间时,可以将函数FileDateTime作为函数DateValue或TimeValue的参数来使用。例如:?DateValue(FileDateTime("C:config.sys"))?TimeValue(FileDateTime("C:config.sys"))
2. 在立即窗口里将下述语句在一行输入:
If DateValue(FileDateTime("C:config.sys"))< Date then Debug.Print "This file was notmodified today.”
Date函数返回当前系统日期,也是视窗控制面板的日期
对话框里设定的。
获得文件大小(FileLen 函数)
如果你需要检查某文件是否能够存在某磁盘上,那么你应该按照下述方式使用FileLen函数:
FileLen(文件路径名)FileLen函数一字节方式返回文件的大小。如果该文件已打开,那么VB将返回该文件最后一个保存时的大小。
假设你想要获取Windows目录下进行配置设置的所有文件的总大小:
1. 在当前工程里插入新模块,并重命名为FileLenFunction
2. 在代码窗口了输入过程TotalBytesIni:Sub TotalBytesIni()Dim iniFile As StringDim allBytes As LonginiFile = Dir("C:WINDOWS*.ini")allBytes = 0Do While iniFile <> ""allBytes = allBytes + FileLen("C:WINDOWS" & iniFile)iniFile = DirLoopDebug.Print "Total bytes: " & allBytesEnd Sub
-
vba移动文件_VBA代码如何移动文件,如何复制文件
2020-11-21 01:39:58分享成果,随喜真能量。大家好,今日内容仍是和大家分享VBA编程中常用的简单“积木”过程代码,这些内容... 184:在VBA中使用CopyFile方法复制VBA过程代码183:在VBA中使用MoveFile方法将示例文件移动Sub mynz() ...分享成果,随喜真能量。大家好,今日内容仍是和大家分享VBA编程中常用的简单“积木”过程代码,这些内容大多是取至我编写的“VBA代码解决方案”教程中内容。NO.183-NO.184内容是:
NO. 183:在VBA中使用MoveFile方法将示例文件移动
NO. 184:在VBA中使用CopyFile方法复制
VBA过程代码183:在VBA中使用MoveFile方法将示例文件移动
Sub mynz()
Dim MyFile As Object
On Error Resume Next
Set MyFile = CreateObject("Scripting.FileSystemObject")
MyFile.MoveFile ThisWorkbook.Path & "abc.docx", ThisWorkbook.Path & "ABC"
Set MyFile = Nothing
MsgBox "OK!"
End Sub
代码解析:mynz过程使用MoveFile方法将示例文件所在文件夹中的“abc.docx”文件移动到“ABC”文件夹中。代码使用CreateObject函数创建FileSystemObject对象并将该对象赋给变量MyFile。代码使用MoveFile方法移动文件。过程将示例文件所在文件夹中的“abc.docx”文件移动到同一目录中的“ABC”文件夹。
VBA过程代码184:在VBA中使用CopyFile方法复制
Sub mynz()
Dim MyFile As Object
On Error Resume Next
Set MyFile = CreateObject("Scripting.FileSystemObject")
MyFile.CopyFile ThisWorkbook.Path & "abc.docx", ThisWorkbook.Path & "ABC"
Set MyFile = Nothing
MsgBox "OK!"
End Sub
代码解析:mynz过程使用CopyFile方法将示例文件所在文件夹中的“abc.docx”文件复制到“ABC”文件夹中。代码使用CreateObject函数创建FileSystemObject对象并将该对象赋给变量MyFile。代码使用CopyFile方法复制文件。过程将示例文件所在文件夹中的“abc.docx”文件复制到“ABC”文件夹中。
VBA是实现自己小型办公自动化的有效手段,我根据自己20多年的VBA实际利用经验,现推出了四部VBA教程,这些是我多年编程经验的记录,也是我“积木编程”思想的体现。每一讲都是较大块的“积木”,可以独立的完成某些或者某类的过程,有需要的朋友可以联络(WeChat:NZ9668)分享。利用这些可以提高自己的编程效率。其一:“VBA代码解决方案”PDF教程,是VBA中各个知识点的讲解,覆盖了绝大多数的知识点,是初学及中级以下人员必备;其二“VBA数据库解决方案”PDF教程,数据库是数据处理的利器,对于中级人员应该掌握这个内容了。其三“VBA数组与字典解决方案”PDF教程,讲解VBA的精华----字典,是我们打开思路,提高代码水平的必备。其四“VBA代码解决方案”视频教程。目前正在录制,“每天20分钟,半年精进VBA”,越早参与,回馈越多。现在录制到第三册的103讲,以上各教程的代码都是经过实测,可以拿来即用。
-
vba移动文件_Excel VBA 之 按需求移动、复制文件
2020-11-21 01:39:50今天接到一个需求,用VBA将一个文件夹内的文件分配到不同的文件夹中,我用了几行代码就解决了,现在我来分享给大家。现在,文件夹内有一些文件,如图:我们可以根据自己的需求在Excel表格里将文件结构编写一下,如图...今天接到一个需求,用VBA将一个文件夹内的文件分配到不同的文件夹中,我用了几行代码就解决了,现在我来分享给大家。
现在,文件夹内有一些文件,如图:
我们可以根据自己的需求在Excel表格里将文件结构编写一下,如图:
然后,打开VBA编辑器,加入以下代码
00 Sub main()01 Dim fso02 Dim myPath$03 myPath = ThisWorkbook.Path & ""04 Set fso = CreateObject("Scripting.FileSystemObject")05 On Error Resume Next06 For i = 1 To [A1].End(xlToRight).Column07 MkDir (myPath & Cells(1, i))08 If Cells(2, i) <> "" Then09 For j = 2 To Cells(65536, i).End(xlUp).Row10 If Dir(myPath & Cells(j, i)) <> "" Then11 'fso.CopyFile myPath & Cells(j, i), myPath & Cells(1, i) & ""'复制12 fso.MoveFile myPath & Cells(j, i), myPath & Cells(1, i) & "" '移动13 End If14 Next15 End If16 Next17 On Error GoTo 018 Set fso = Nothing19 End Sub
写过这么多期了,估计大家也已经轻车熟路了,所以就不一一讲解了,如果有不明白的地方,可以私信或评论问我,我一定会回答大家。
其中,主要运用了以下几个知识点,
1.MkDir语句:新建目录或文件夹
2.Dir 函数:返回特定文件名(文件夹名),没有找到则返回“”
3.FileSystemObject 对象的MoveFile方法:将一个或多个文件从一个位置移动到另一个位置
4.FileSystemObject 对象的CopyFile方法:将一个或多个文件从一个位置复制到另一个位置
最后,我们来看一下最终效果:
最终效果
大家可以点开下面链接,查看我的其他文章哦!
848个Excel VBA 实用技巧,实例+详细解析,入门必看,建议收藏
Excel VBA 之 去除重复项
Excel VBA 之 年会抽奖小程序
Excel VBA 之 将txt文档批量导入至Excel
Excel VBA 之 统计词汇出现次数
Excel VBA 之 随机抽取数据
。。。
喜欢本文章的朋友记得收藏、点赞、关注哦,网友们如果在Excel中遇到问题都可以找我交流,也可以在评论区或私信告诉我你想看到的VBA办公教程,我将在下期分享给大家,以后不定期更新Excel VBA技巧!
-
VBA移动文件到名字相同的文件夹内
2011-02-22 09:31:51VBA做的小工具,将指定文件夹下文件放入匹配名字的文件夹内,文件属于复制移动 -
vba移动文件_利用NAME语句,给文件重命名
2020-11-21 01:39:51大家好,我们今日讲解“VBA信息获取与处理”教程中第十七个专题“文件及文件夹信息的获取及操作”的第一节“判断文件及文件夹是否存在”,这个专题是非常实用的知识点,希望大家能掌握利用。教程会提供配套的程序... -
vba移动文件_VBA如何移动文件夹,如何为电脑定制程序
2020-11-21 01:39:50分享成果,随喜真能量。... 188:在VBA中使用MoveFolder方法将文件夹移动NO. 189:在VBA中使用工作簿打开时判断电脑的名称,实现量身定做NO. 190:在VBA中使用工作簿打开时判断电脑的名称,实现量身定做2VBA... -
Excel VBA 移动文件和文件夹
2018-05-22 17:19:24先放上Excel VBA 移动文件和文件夹的方法。等我研究一下再放新方法。学习学习~1、移动指定文件:Public Sub 移动文件() Dim myFile As String Dim myNewFilePath As String Dim fso As Scripting.... -
vba移动文件_VBA代码解决方案的第67讲内容:在VBA中利用WSH移动文件
2020-11-21 01:39:56大家好,我们今日继续讲解VBA代码解决方案的第67讲内容:利用WSH,在VBA中移动文件,在上一讲中我们讲了Windows Scripting Host的由来和利用的价值,今天我们就试着利用这个脚本语言来实现我们的一些日常常用的文件... -
vba移动文件_VBA那点事--工作簿(表)你真的懂么?
2020-11-21 01:39:54上一篇文,我们初步了解了VBA,现在我们进入Excel应用篇。我们都知道,我们日常工作中操作数据的表,我们称之为工作表,就是我们常见的sheet,而多张sheet组成了工作簿。熟悉Excel函数的小伙伴应该都知道,我们经常... -
vba移动文件_简单几步,根据Excel名单自动筛选出目标文件,并移动/复制到新的文件夹...
2020-11-21 01:40:03使用场景工作中我们可能会遇到这样的场景:需要按照一个特定的规则清单,将某些文件从一个文件夹筛选出来。比如说:从1000份体检报告中,筛选出单位A的文件。这时候我们拿着单位A的名单一个个复制出来,可能要到猴年... -
vba移动文件_VBA代码方案72讲:利用Windows Scripting Host,在VBA中写代码移动文件夹...
2020-11-21 01:39:48大家好,我们今日继续讲解VBA代码解决方案的第72讲内容:利用Windows Scripting Host(WSH),移动文件夹。在上一讲的内容中我们讲了如何复制文件夹,今日的内容我们讲解如何移动文件夹。这时我们会用到MoveFolder方法... -
利用VBA移动文件,创建文件
2019-08-26 16:10:05心得(3):如何利用VBA的FSO进行文件或者文件夹操作 问题:如何对文件或者文件进行操作,例如:怎么判断文件夹是否存在,怎么创建文件夹等等 解决:利用VBA的FSO 进行操作,这个对象流 包含了各种对文件或者文件夹的... -
vba移动文件_VBA代码解决方案的第68讲内容:利用WSH,复制文件
2020-11-21 01:39:51大家好,我们今日继续讲解VBA代码解决方案的第68讲内容:利用WSH,复制文件.在上一讲中,我讲了利用WSH脚本语句实现了文件的移动的问题,今日我们继续来讲解利用这个方法实现文件复制的方法。 如果需要把文件从一个... -
vba移动文件_vba·游戏设计·实现键盘控制
2020-10-23 03:55:42在网上查了很多资料,发现VBA并没有监听键盘的函数,好在VBA可以调用windows api,从而实现对键盘的监听。鉴于有可能有和我一样的小白,所以先从基础的windows api开始讲起吧。 什么是windows api WINDOWS API是... -
vba移动文件_Excel VBA之FSO-2.3文件夹的移动
2020-11-21 01:39:48Excel VBA之FSO-2.3文件夹的移动前景提要我们之前接触了如何通过FSO来实现文件夹的复制操作,此操作需要注意的一点就是如果当前文件夹中有历史版本的同名文件夹的话,他会直接覆盖原来的数据,如果需要保存历史数据... -
vba移动文件_创建文件夹的方法,VBA代码中Windows Scripting Host的利用
2020-11-21 01:39:51大家好,我们今日继续讲解VBA代码解决方案的第70讲内容:利用Windows Scripting Host(WSH),创建一个文件夹。在实际的代码编写工程中,经常会用到创建一个新的文件夹,如果在一般的操作中,只需要点击右键,选择新建... -
excel --vba(批量移动文件)
2021-06-14 10:06:59Sub 移动文件() Dim MyPath1 As String, MyPath2 As String, MyName1 As String, MyName2 As String MyPath1 = "C:\Users\Administrator\Desktop\建设村地籍表\地籍调查表(使用权)\" '指定原始文件所在文件夹 ... -
vba移动文件_办公一族选择VBA还是Python?
2020-11-21 01:39:57到底是VBA,还是Python?类似的话题,还有操作EXCEL学者Python,还是VBA现在学习VBA还值吗?是否过期等!这些问题,有很多粉丝在问,在知乎、头条我都有写过几篇交流过。今天我们就来系统总结交流一下。首先,我... -
vba移动文件_你想要的爬虫、VBA系列教程这里都有!
2020-11-20 15:57:14传送门在这里:收藏 | 27个Excel vba实例汇总(附赠VBA教程) 大致分类如下: 单元格操作 实例(1)- 批量制作工资表头 实例(5)- 快速合并n多个相同值的单元格 实例(9)- 批量插入、删除表格中的空行 实例(11)- 拆分... -
vba移动文件_VBA学习笔记8:工作表操作
2020-11-21 01:40:02学习资源:《Excel VBA从入门到进阶》第10集 by蓝色幻想一、Excel工作表的分类Excel工作表有两大类,一类是我们平常用的工作表(worksheet),另一类是图表、宏表等。这两类的统称是sheets。在工作表的标签页上右击—... -
vba移动文件_一线软件Recuva免费数据恢复软件,找回不小心误删的照片、影片、文件(Win)...
2020-10-24 19:20:26Recuva能够有效地恢复误删除、误格式化的文件,支持恢复电脑硬盘、U盘、移动硬盘等存储设备上的文件。 Recuva具有使用方便,扫描速度快,恢复效果好等特点,是一款不可或缺的数据恢复软件。 下载网址 {领取方式:... -
excel vba 移动excel sheet 表到其他excel文件 进行数据统计
2019-12-21 20:55:10这个压缩包里边宏保存的时候丢掉了,我另外再传一个,见另一个资源... Excel vba 移动当前目录下边的excel的Sheet表到另一个新的excel表格,设计到文件创建 移动 删除 重命名等很多实用功能,备注很详细。适合初学者。 -
使用ftp.exe(使用VBA生成批处理文件)按顺序连接到多个FTP服务器
2021-08-13 07:04:49我试图从多个FTP服务器检索特定文件...使用ftp.exe(使用VBA生成批处理文件)按顺序连接到多个FTP服务器代码:Const script = "C:\Users\xyz.abc\trial.bat"Dim fileno As IntegerDim retval As Variantfileno = Free... -
excel vba upload file to ftp server
2021-08-13 07:04:47I am using the following script in excel to try and upload a text file to my server. For some reason my script is failing.Please can someone show me where I am going wrong? all the login details are c... -
调试经验——联合使用批处理、VBA完成文件的自动重命名(Renaming files with batch and VBA)
2019-08-13 16:03:05今天花了大半天时间完成了一个自动化业务:文件的自动重命名。 本程序启动前,Windows批处理将提取工作文件夹下的所有source文件,并将文件名保存在Source_File_List.xls中。 然后,Windows批处理程序将启动本程序... -
批量移动、重命名文件.xlsm
2021-06-29 16:45:35批量移动、重命名文件.xlsm,源码可见