设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 2544|回复: 7
打印 上一主题 下一主题

使用API复制文件

[复制链接]

点击这里给我发消息

跳转到指定楼层
1#
发表于 2007-12-17 00:23:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
使用VBA或SHELL复制有一些局限,可以试试下面API实现文件复制的功能

将代码放在模块中,然后调用 ShellFileCopy 函数

Option Explicit
Private Type SHFILEOPSTRUCT
        hwnd As Long
        wFunc As Long
        pFrom As String
        pTo As String
        fFlags As Integer
        fAnyOperationsAborted As Long
        hNameMappings As Long
        lpszProgressTitle As String
End Type
Private Declare Function SHFileOperation Lib "shell32.dll" _
Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long
Private Const FOF_ALLOWUNDO = &H40
Private Const FOF_NOCONFIRMATION = &H10
Private Const FO_COPY = &H2

Public Function ShellFileCopy(src As String, dest As String, _
    Optional NoConfirm As Boolean = False) As Boolean
'PURPOSE: COPY FILES VIA SHELL API
'THIS DISPLAYS THE COPY PROGRESS DIALOG BOX
'PARAMETERS: src: Source File (FullPath)
            'dest: Destination File (FullPath)
            'NoConfirm (Optional): If set to
            'true, no confirmation box
            'is displayed when overwriting
            'existing files, and no
            'copy progress dialog box is
            'displayed
            
            'Returns (True if Successful, false otherwise)
            
'EXAMPLE:  
  'dim bSuccess as boolean
  'bSuccess = ShellFileCopy ("C:\MyFile.txt", "D:\MyFile.txt")
Dim WinType_SFO As SHFILEOPSTRUCT
Dim lRet As Long
Dim lflags As Long
lflags = FOF_ALLOWUNDO
If NoConfirm Then lflags = lflags & FOF_NOCONFIRMATION
With WinType_SFO
    .wFunc = FO_COPY
    .pFrom = src
    .pTo = dest
    .fFlags = lflags
End With
lRet = SHFileOperation(WinType_SFO)
ShellFileCopy = (lRet = 0)
End Function
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2007-12-17 08:09:58 | 只看该作者
呵呵,謝謝分享~!

点击这里给我发消息

3#
发表于 2007-12-17 10:19:04 | 只看该作者
谢谢站长,学习先
能具体说下:
使用VBA或SHELL复制和用ShellFileCopy 函数复制具体有什么区别吗?
4#
发表于 2007-12-17 17:11:13 | 只看该作者
谢谢站长的分享,顶一下
5#
发表于 2007-12-17 18:02:45 | 只看该作者
我也想知道有什么区别,平时是用shell

点击这里给我发消息

6#
 楼主| 发表于 2007-12-17 18:26:54 | 只看该作者
SHELL 无法知道 复制是否完成,必须使用另一个API来检测 进程完成否
而以上API, 可返回成功与否的值
7#
发表于 2007-12-17 22:41:31 | 只看该作者
已有,支持一个~API还支持批量复制,使用中的文件复制不出错,文件夹的复制删除等一系列操作
8#
发表于 2009-9-27 11:10:21 | 只看该作者
谢谢站长。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2025-1-6 06:29 , Processed in 0.112067 second(s), 31 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表