大家好,我们今日继续讲解VBA代码解决方案的第71讲内容:利用Windows Scripting Host(WSH),复制文件夹
如果需要复制文件夹,可以使用CopyFolder方法。应用于FileSystemObject对象的CreateObject方法从一个地方递归地复制一个文件夹到另一个地方,语法如下:
object.CopyFolder source, destination[, overwrite]
参数:
a) object是必须的, FileSystemObject对象的名字。
b) source是必须的,指明一个或多个被复制文件夹的字符串文件夹说明,可以包括通配符。
c) destination是必须的,被复制文件夹和子文件夹的接受端的字符串,不允许有通配符。
d) overwrite是可选的,表示已存在的文件夹是否被覆盖。如果为True,文件被覆盖,如果为False,文件不被覆盖。缺省值为True。
特别注意点:如果参数source中包含通配符或参数destination以路径分隔符(\)为结尾,则认为参数destination是一个已存在的文件夹,在其中复制相匹配的文件夹和子文件夹。否则认为参数destination是一个要创建的文件夹的名字。
讲完了上面本节要利用到的方法,我们再来学习一点关于FileSystemObject对象的知识, 要使用FileSystemObject对象,先要创建它。创建FileSystemObject对象要使用CreatObject函数。CreateObject 函数用来创建并返回一个对 ActiveX 对象的引用。这个函数的语法我在之前讲解过,再次的复习一下:
语法:CreateObject(class,[servername])
参数:class 是要创建的应用程序名称和类。;servername 要在其上创建对象的网络服务器名称。(如果要在远程计算机上创建对象才用)
class 参数使用 appname.objecttype 这种语法,包括以下部分:appname 必需的;提供该对象的应用程序名。 objecttype 必须的;待创建对象的类型或类。因此,我们用下面的代码创建FileSystemObject对象:
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
其中Scripting是类型库的名称,FileSystemObject就是要创建的对象的名字。同样我们可以创建Dictionary 对象如下:
Dim d
Set d = CreateObject("Scripting.Dictionary")
好了就讲到这里,下面我们继续看文件夹的复制方法,看下面的代码:
Sub MyCopyFolder()
Dim MyFile As Object
Set MyFile = CreateObject("Scripting.FileSystemObject")
MyFile.CopyFolder ThisWorkbook.Path & "\ABC", ThisWorkbook.Path & "\ABC-1"
Set MyFile = Nothing
MsgBox "OK!"
End Sub
代码解析:MyCopyFolder过程使CopyFolder方法将示例文件所在文件夹中的"ABC"文件夹复制并改名为"ABC-1"文件夹。
第3行代码使用CreateObject函数创建FileSystemObject对象并将该对象赋给变量MyFile。
第4行代码使用CopyFolder方法复制文件夹。
运行CopyFolder过程将示例文件所在文件夹中的"ABC"文件夹复制并改名为"ABC-1"文件夹。
代码窗口截图:
运行后:生成一个新的文件夹ABC-1
今日内容分回向:
1 如何复制一个文件呢?CopyFolder的意义是什么?
2 CreateObject(class,[servername])的作用是什么?
好,我们今日继续讲解VBA代码解决方案的第71讲内容:利用Windows Scripting Host(WSH),复制文件夹
如果需要复制文件夹,可以使用CopyFolder方法。应用于FileSystemObject对象的CreateObject方法从一个地方递归地复制一个文件夹到另一个地方,语法如下:
object.CopyFolder source, destination[, overwrite]
参数:
a) object是必需的, FileSystemObject对象的名字。
b) source是必需的,指明一个或多个被复制文件夹的字符串文件夹说明,可以包括通配符。
c) destination是必需的,被复制文件夹和子文件夹的接受端的字符串,不允许有通配符。
d) overwrite是可选的,表示已存在的文件夹是否被覆盖。如果为True,文件被覆盖,如果为False,文件不被覆盖。缺省值为True。
特别注意点:如果参数source中包含通配符或参数destination以路径分隔符(\)为结尾,则认为参数destination是一个已存在的文件夹,在其中复制相匹配的文件夹和子文件夹。否则认为参数destination是一个要创建的文件夹的名字。
讲完了上面本节要利用到的方法,我们再来学习一点关于FileSystemObject对象的知识, 要使用FileSystemObject对象,先要创建它。创建FileSystemObject对象要使用CreatObject函数。CreateObject 函数用来创建并返回一个对 ActiveX 对象的引用。这个函数的语法我在之前讲解过,再次的复习一下:
语法:CreateObject(class,[servername])
参数:class 是要创建的应用程序名称和类。;servername 要在其上创建对象的网络服务器名称。(如果要在远程计算机上创建对象才用)
class 参数使用 appname.objecttype 这种语法,包括以下部分:appname 必需的;提供该对象的应用程序名。 objecttype 必需的;待创建对象的类型或类。因此,我们用下面的代码创建FileSystemObject对象:
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
其中Scripting是类型库的名称,FileSystemObject就是要创建的对象的名字。同样我们可以创建Dictionary 对象如下:
Dim d
Set d = CreateObject("Scripting.Dictionary")
好了就讲到这里,下面我们继续看文件夹的复制方法,看下面的代码:
Sub MyCopyFolder()
Dim MyFile As Object
Set MyFile = CreateObject("Scripting.FileSystemObject")
MyFile.CopyFolder ThisWorkbook.Path & "\ABC", ThisWorkbook.Path & "\ABC-1"
Set MyFile = Nothing
MsgBox "OK!"
End Sub
代码解析:MyCopyFolder过程使CopyFolder方法将示例文件所在文件夹中的"ABC"文件夹复制并改名为"ABC-1"文件夹。
第3行代码使用CreateObject函数创建FileSystemObject对象并将该对象赋给变量MyFile。
第4行代码使用CopyFolder方法复制文件夹。
运行CopyFolder过程将示例文件所在文件夹中的"ABC"文件夹复制并改名为"ABC-1"文件夹。
代码窗口截图:
运行后:生成一个新的文件夹ABC-1
今日内容分回向:
1 如何复制一个文件夹呢?CopyFolder的意义是什么?
2 CreateObject(class,[servername])的作用是什么?