问题大概如下:
我的D盘下有一个文件夹AAA,AAA文件夹下有一个文件1.txt我希望复制D:\AAA\1.txt到C:\AAA\1.txt
前提是我C盘下无文件夹AAA,我也不希望通过CopyFolder方式把整个文件夹下的文件全复制过去
也不想手动去建立这个文件夹有没有办法直接复制文件,如果目标地址路径不对则自动生成相关的文件夹?

解决方案 »

  1.   

    利用错误捕捉机制:(为使问题典型化,多级目的目录)
    Private SUb Command1_Click()
    On Error Goto ErrL
    Err.clear
    Dim fso As New FileSystemObject
    SourceStr= "D:\AAA\1.txt"
    DestStr="C:\AAA\BBB\CCC\1.txt"
    fso.CopyFile SourceStr, DestStr 
    eixt sub
    ErrL:    '错误则表示目录不存在
    Dim a() as String,str1 as String
    a=split(DestStr,"\")
    str1=a(0) & "\"
    For i=1 to Ubound(a)-1
      str1= str1 & a(i)
      fso.CreateFolder(str1)
    Next
    '以上循环完成了多目录的层叠创建
    fso.CopyFile(Sourcestr,DestStr)
    End Sub楼主去试试
      

  2.   

    Private Sub Command4_Click()
        Dim fso As New FileSystemObject
        Dim FloderName As String
        Dim src As String
        Dim de As String
        FloderName = "c:\aaa"
        
        src = "d:\aaa\1.txt"
        
        If Not fso.FileExists(FloderName) Then
            fso.CreateFolder (FloderName)
        End If
        
        de = FloderName
        
        fso.CopyFile src, de, True    
    End Sub
      

  3.   

    假设我们想将 c:\temp 目录的所有档案(包含其子目录)复制到 c:\temp2 目录底下, 则程式如下:
     
    Dim SHFileOp As SHFILEOPSTRUCT
     
    SHFileOp.wFunc = FO_COPY
    SHFileOp.pFrom = "c:\temp\*.*"
    SHFileOp.pTo = "c:\temp2\*.*"
    SHFileOp.fFlags = FOF_ALLOWUNDO + FOF_NOCONFIRMMKDIR
    Call SHFileOperation(SHFileOp)
     
    在以上叙述中请注意一件事情:FOF_NOCONFIRMMKDIR 表示不显示交谈窗询问使用者「是否建立目录」,如果取消此一设定值, 而当 SHFileOp.pTo 所指定的目录不存在时, 则 Windows 会询问使用者是否建立目录。(SHFileOp.pTo = "c:\temp2\*.*" 写成 SHFileOp.pTo = "c:\temp2 亦可)
      

  4.   

    但是你的利用错误捕捉机制并不怎么好DestStr="C:\AAA\BBB\CCC\1.txt" 不存就会被捕了 fso.CreateFolder(str1) 当str1中如果有一个文件夹存在就会出错了。
      

  5.   

    你可以先用FileSystemObject.FolderExists先判断Folder是否存在,然后执行操作。
      

  6.   

    用SHFileOperation可能比较简单
      

  7.   

    同意LPan008() 
    如果没有就createfolder
    再循环copy
      

  8.   

    这样效率很低的,有没有语法直接像XCOPY那样的,如果目标文件夹不存在就自动创建文件夹之后再拷贝的?