VBA中复制文件的步骤

使用FileCopy语句,可以在文件夹之间复制文件:
FileCopy 来源, 目的地

该语句的第一个参数是文件来源,明确你要复制的文件名称,该名称可以包含驱动名称。第二个参数是复制的目的地,可以包括驱动和文件夹的地址。两个参数都是必须的。假设你要将用户确定的一个文件复制到一个叫做“C:Abort”的文件夹,下面的过程示范如何完成它:
Sub CopyToAbort()
Dim folder As String
Dim source As String
Dim dest As String
Dim msg1 As String
Dim msg2 As String
Dim p As Integer
Dim s As Integer
Dim i As Long
On Error GoTo ErrorHandler
folder = "C:Abort"
msg1 = "The selected file is already in this folder."
msg2 = "was copied to"
p = 1
i = 1
 get the name of the file from the user 从用户处获取文件名称
source = Application.GetOpenFilename
 don’t do anything if cancelled 如果取消则不进行任何操作
If source = "False" Then Exit Sub

get the total number of backslash characters "" in the source 获取文件来源字符

串中的反斜杠数

variable’s contents

Do Until p = 0

p = InStr(i, source, "", 1)

If p = 0 Then Exit Do

s = p

i = p + 1

Loop

create the destination file name 创建目的文件名称

dest = folder & Mid(source, s, Len(source))

create a new folder with this name 创建同名文件夹

MkDir folder

check if the specified file already exists in the 检查该文件是否在目的地已经存

destination folder

If Dir(dest) <> "" Then

MsgBox msg1

Else

copy the selected file to the C:Abort folder 复制所选文件到文件夹“C:Abort”

FileCopy source, dest

MsgBox source & " " & msg2 & " " & dest

End If

Exit Sub

ErrorHandler:

If Err = "75" Then

Resume Next

End If

If Err = "70" Then

MsgBox "You can’t copy an open file."

Exit Sub

End If

End Sub

过程CopyToAbort使用了Excel应用程序的方法GetOpenFilename从用户那里获取文件名称。该方法导致弹出内置的打开对话框。使用该对话框,你可以在任何驱动的任何文件夹里选择任何文件。如果用户取消了,VB就返回值“False”并且程序结束。如果用户选取了某个文件并且点击了打开,那么该选中的文件就会赋值到变量source。因为复制的目的,你只需要文件名称(而不需路径名),所以Do…Until循环用来找到最后一个反斜杠(“”)在变量source里的位置。

接下来,VB给FileCopy语句的第二个参数准备了一个字母字符串,并且将其赋值到变量dest。该变量储存的字符串是目标文件夹(C:Abort)和用户指定的文件名前面加反斜杠连接起来的。函数MkDir创建了一个叫C:Abort的文件夹,如果它不存在于C盘上的话。如果这样的文件夹已经存在的话,那么VB就需要去处理错误75了。这个错误会被在程序后面的错误处理代码捕获。注意,错误处理器是一代码片断,它用ErrorHandler带冒号标志。

当VB遇到Resume Next语句时,就会继续执行过程里面导致错误的代码行下面的代码。这意味着语句MkDirfolder不会被执行。在这之后,程序将检查被选择的文件是否已经存在于目的文件夹。如果文件在那,那么用户将收到储存于变量msg1里面的信息;如果文件不存在于目的文件夹并且该文件当前没有打开的话,VB就会将文件复制到指定的文件夹,并且用相应的信息通知用户。如果该文件被打开了,VB将遇到运行时间错误70,并且因此而运行ErrorHandler里面的相应指令。

1. 在一名为FileCopyStatement的信魔窟里输入过程CopyToAbort

2. 运行该程序几次,从不同的文件夹里选择文件

3. 试着复制该程序之前复制过的文件到文件夹C:Abort

4. 打开某个文件,并且在其开着的情况下试图用过程CopyToAbort来复制它

5. 运行本章前面准备的过程MyFiles,在立即窗口里列出文件夹C:Abort里面的内容
注意,不要删除文件夹C:Abort和你复制的文件,你将在下一节里面使用一个叫RemoveMe的VBA过程来同时删除文件和文件夹。

作者:admin,如若转载,请注明出处:https://www.web176.com/vba/20240.html

(0)
打赏 支付宝 支付宝 微信 微信
adminadmin
上一篇 2023年5月15日
下一篇 2023年5月15日

相关推荐

发表回复

登录后才能评论