高手请进:VB中拷贝一文档内容到另一文档出错原因何在?

laoluo 2005-10-26 12:46:49
请耐心看完:问题出现得较复杂。
我的目的:
将多个文档内容逐一拷贝粘贴到另一文档后面,
我的方法:

wordapp=new word.application
Set doc = wordapp.Documents.Add

while
pathTemp = App.Path & "\temp.doc"
LoadFile rs("word"), pathTemp
Set doctemp = wordapp.Documents.Open(pathTemp)
doctemp.Content.Select
wordapp.Selection.copy
Set myRange = doc.Range(Start:=doc.Content.End - 1, End:=doc.Content.End)
myRange.Select
' wordapp.Selection.delete
wordapp.Selection.InsertParagraphBefore
wordapp.Selection.Collapse wdCollapseEnd
wordapp.Selection.paste
Clipboard.Clear
doctemp.Close wdDoNotSaveChanges
doc.SaveAs App.Path & "\papertemp.doc"


如果我的文档(待拷贝的文档,这些文档都是从数据库中读出来的,存在pathTemp文件中)都较小的话,我的程序可以顺利完成任务,如果其中一个文档较大,那么问题出现了,但是问题不是马上出现,该文档的内容能顺利从数据库下载到文件pathTemp中,也能打开到doctemp中,复制粘贴到doc中也没有问题,但是关闭doctemp时却发现隐藏的~$temp.doc并没有消失(意味着doctemp并没有关闭?),接着我把下一个文档从数据库读出放到doctemp中也能完成,temp.doc中内容正确,但是当我用Set doctemp = wordapp.Documents.Open(pathTemp)打开时却出现了问题,
运行时错误 ‘5121’
文档的名称或路径无效,请使用如下建议:....

手动打开temp.doc也出现同样的错误,但是当我关掉doc(即papertemp.doc)时,打开temp.doc却是正常,而且里面数据也正常


请高手指教,愿送所有分
...全文
186 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
laoluo 2005-10-27
  • 打赏
  • 举报
回复
northwolves(狼行天下) ,非常感谢,虽然没有问题之所在,但是绕开了问题相当于解决了问题,再次感谢!
有什么办法可以把分一下相送,以示感激之情?除了多开几贴还有其他办法嘛?
faysky2 2005-10-26
  • 打赏
  • 举报
回复
把doc也关掉试试:
.....
Clipboard.Clear
doctemp.Close wdDoNotSaveChanges
doc.SaveAs App.Path & "\papertemp.doc"
doctemp.Quit
doc.Quit
Set doc=Nothing
northwolves 2005-10-26
  • 打赏
  • 举报
回复
何必打开,直接合并不行? 试试:

Private Sub Command1_Click()

Dim wordapp As New Word.application, doc As New Document, pathtemp As String
Set doc = wordapp.Documents.Open(App.Path & "\papertemp.doc")
doc.Content.Select
Do While Not rs.EOF
pathtemp = App.Path & "\temp.doc"
LoadFile rs("word"), pathtemp'你写的过程吧
With wordapp.selection
.InsertFile FileName:=pathtemp, ConfirmConversions:=False
.InsertParagraphAfter
.InsertBreak Type:=wdSectionBreakNextPage
.Collapse Direction:=wdCollapseEnd
End With
Kill pathtemp
rs.movenext
Loop
doc.Save
End If
mylord 2005-10-26
  • 打赏
  • 举报
回复
正在学习中...
laoluo 2005-10-26
  • 打赏
  • 举报
回复
help,
laoluo 2005-10-26
  • 打赏
  • 举报
回复
这个号所有分相送,这个号就剩500分了,数来帮我啊,
分不够我另外一个号还可再加!
laoluo 2005-10-26
  • 打赏
  • 举报
回复
还是不行,

哪位高手帮我解决,另送200分
faysky2 2005-10-26
  • 打赏
  • 举报
回复
是着释放doctemp 看看:
....
Clipboard.Clear
doctemp.Close wdDoNotSaveChanges
doc.SaveAs App.Path & "\papertemp.doc"
Set doctemp=Nothing'--->释放掉doctemp

2,462

社区成员

发帖
与我相关
我的任务
社区描述
VBA(Visual Basic for Applications)是Visual Basic的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。
社区管理员
  • VBA
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧