急!!!关于文件拷贝??
各位大虾,第一次用VB客户要求的。帮我看看程序。我用了CommonDialog1控件来实现多个文件可以同时拷贝,其中用了COPYFILE函数,但每次返回值为0,拷贝不成功。
'函数声明
Private Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long
Dim k As Integer
Dim l As Integer
Dim b As Integer
Dim h As Integer
Dim ccc As String
Dim pp As Long
'存储文件名的数组
Dim FileNames$()
CommonDialog1.FileName = ""
CommonDialog1.Filter = "*.txt|*.txt"
'为“打开”和“另存为”对话框返回或设置选项。
'-----------------------------------------------------
CommonDialog1.Flags = cdlOFNAllowMultiselect
CommonDialog1.MaxFileSize = 10240
CommonDialog1.Action = 1
'它指定文件名列表框允许多重选择。运行时,通过按 SHIFT 键以及
'使用 UP ARROW 和 DOWN ARROW 键可选择多个文件。作完此操作后,
'FileName 属性就返回一个包含全部所选文件名的字符串。
'串中各文件名用空格隔开。
CommonDialog1.FileName = CommonDialog1.FileName & Chr(255)
'从返回的字符串中分离出文件名
'经过分离后FileNames(Y)数组存放着选择的文件名信息
'如果只有一个文件 FileNames(0)=“文件名”
'如果有多个文件 FileNames(0)=“路径名” FileNames(1--y)=“文件名”
'这时我们需要对数组进行处理
b = 1
For k = 1 To Len(CommonDialog1.FileName)
'InStr函数,返回 Variant (Long),指定一字符串在另一字符串中最先出现的位置。
'语法 InStr(起点位置, string1, string2)
k = InStr(b, CommonDialog1.FileName, Chr(255))
If k = 0 Then Exit Sub
ReDim Preserve FileNames(l) As String
'Mid函数,返回 Variant (String),其中包含字符串中指定数量的字符。
'语法 Mid(string, start[, length])
FileNames(l) = Mid(CommonDialog1.FileName, b, k - b)
b = k + 1
l = l + 1
Next
ccc = App.Path+"\文件\"
For h = 0 To l - 1
pp = CopyFile(FileNames(h), ccc, True) '*(走到这时,pp的返回值为0,拷贝失败)*
Next