为何用 Name As 移动文件有时能行有时不行?

ssq119 2008-01-16 09:52:38
我在一VB6程序中要操作Word文档,因涉及到处理文档中插图,要用到剪贴板,为了防止程序运行过程中弹出Word提示框(如“剪贴板中有大量图片,要应用到其他程序……”),所以要清空剪贴板,我先引用API函数:

Private Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function CloseClipboard Lib "user32" () As Long
Private Declare Function GetClipboardData Lib "user32" (ByVal uFormat As Long) As Long
Private Declare Function EmptyClipboard Lib "user32" () As Long

然后写下:
OpenClipboard (0)
EmptyClipboard
CloseClipboard
可以达到目的。但我在程序中还要将Word文档在处理完后移动到另一目录下,写下:

'在文档所在目录下建立DOC_BAK目录,用以备份源文档
If Dir(aDoc.Path & "\DOC_BAK", vbDirectory) = "" Then MkDir aDoc.Path & "\DOC_BAK"
'为复制备份源文档做准备(要带全路径及文件名,且只能在文档被Word释放后才能复制,故在后面实现)
Dim str1 As String, str2 As String
str1 = aDoc.Path & "\" & aDoc.Name
str2 = aDoc.Path & "\DOC_BAK" & "\" & aDoc.Name

当程序释放Word文档和Word后,再写下移动文件的代码:
Name str1 As str2

奇怪的是:
如果处理Word文档时,若文档中不含插图,程序不会调用剪贴板,此时移动文件能成功
但当处理Word文档时,若文档中含有插图,程序就会调用剪贴板,此时移动文件就不能成功

我百思不解,望高手赐教。谢谢!
...全文
67 点赞 收藏 6
写回复
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiong_chi 2008-01-19
可能是在某个模块中调用了剪贴板,特殊是针对文档中嵌入式图处理后可能有此情况。
回复
ssq119 2008-01-19
在5楼的启发下,问题已解决。
回复
ssq119 2008-01-16
MoveFile用过,FileCopy也用过,效果都一样。
关掉Word文档和释放WORD的命令都在之前用到了。
回复
ssq119 2008-01-16
MoveFile用过,FileCopy也用过,效果都一样。
关掉Word文档和释放WORD的命令都在之前用到了。
回复
caofusheng 2008-01-16
可能是哪儿的处理没有关掉,导致文件正在使用。使Name as 失败
回复
chenhui530 2008-01-16
使用MoveFile呢?
回复
发动态
发帖子
VB基础类
创建于2007-09-28

7453

社区成员

VB 基础类
申请成为版主
社区公告
暂无公告