如何把服务器端的两个DOC文件内容合并,生成一个新文件?

xz1997 2003-08-29 09:04:12
请教!请教!!
...全文
214 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
xz1997 2003-09-01
  • 打赏
  • 举报
回复
今天开始上班了,所以白天没看论坛。
再次感谢yonghengdizhen!!
事实上昨天晚上我想了个办法把问题解决了。用的其实还是你的点子:“其实如何操作Word最简单的方法就是你在Word中操作,用宏记录器在Word VBA中记录一个宏操作,然后查看宏代码,按找我上面说的VBA向VBS转换的规则进行转换就对了."
你新贴的待会儿我再试试。
我的E-MAIL:achen1997@cn99.com,希望今后还能向你学点东西!
yonghengdizhen 2003-09-01
  • 打赏
  • 举报
回复
<%
Set obj =Server.CreateObject("Word.Application")
obj.Visible = false
Set worddoc = obj.Documents.Open("D:\hn_jianding.doc")
worddoc.saveas "d:\TEST.DOC"
worddoc.bookmarks("TEST").select
obj.selection.insertFile "d:\aaa.txt"
worddoc.Close
obj.quit
Set obj = Nothing
%>
yonghengdizhen 2003-08-31
  • 打赏
  • 举报
回复
要不这样,你在这儿留个email我发完整的代码给你.
yonghengdizhen 2003-08-31
  • 打赏
  • 举报
回复
其实分多少真的无所谓,因为我并不稀罕人家的mvp.
你也不用再开贴了,我明天会把相对比较完整的代码给你贴在这里.


我的东西都是在msdn上学的,如果你想成为合格的开发人员,必须学会从知识海洋中提取你所需要的东西,论坛是一个方面,更多的是应该你自己去挖掘知识
yonghengdizhen 2003-08-31
  • 打赏
  • 举报
回复
其实如何操作Word最简单的方法就是你在Word中操作,用宏记录器在Word VBA中记录一个宏操作,然后查看宏代码,按找我上面说的VBA向VBS转换的规则进行转换就对了.
yonghengdizhen 2003-08-31
  • 打赏
  • 举报
回复
if WordDoc.bookmarks.exists("你的书签名称") then
WordDoc.bookmarks("你的书签名称").select
wordApp.selection.InsertFile "c:\sss.doc"
end if

前面写得这么清楚了还不知道如何做,i fule you!
xz1997 2003-08-31
  • 打赏
  • 举报
回复
不好意思再让你为了区区20分这么费神。
我是中学老师,ASP刚刚开始学,想做些东西,身边又问不到人,只能上论坛问了
yonghengdizhen:从你那儿学到些东西,在此感谢,希望能继续帮助我。
问题还没有解决,我会发一个新帖子的。
yonghengdizhen 2003-08-30
  • 打赏
  • 举报
回复
Selection对象是作为Word.Application的一个属性存在的.
上面的代码是在Word VBA中的用法。
在ASP中使用必须经过适当的转换
例如ASP中必须显式指定Word.Application对象
ASP不支持命名参数语法
ASP不支持MsgBox等界面类的方法调用
yonghengdizhen 2003-08-30
  • 打赏
  • 举报
回复
Selection 对象
本对象代表一个窗格中的选定内容。该选定内容可以包括文档中的一个区域,也可以仅包括插入点。
注意 每个窗格中只能有一个 Selection 对象,而且只能激活一个 Selection 对象。
使用 Selection 对象
可用 Selection 属性返回 Selection 对象。下例层叠选定内容(如果需要)并将插入点移至当前行尾。
Selection.EndKey Unit:=wdLine, Extend:=wdMove
下例更新选定内容中的域。

If Selection.Fields.Count >= 1 Then Selection.Fields.Update
可用 Type 属性返回选定内容类型(例如,选定内容是一块内容还是一个插入点)。下例当选定内容为插入点时将选定内容变为当前段。

If Selection.Type = wdSelectionIP Then
Selection.Paragraphs(1).Range.Select
End If
可用 Information 属性返回有关选定内容的信息。下例当选定内容在表格中时显示该表格的行数和列数。

If Selection.Information(wdWithInTable) = True Then
MsgBox "Columns = " _
& Selection.Information(wdMaximumNumberOfColumns) _
& vbCr & "Rows = " _
& Selection.Information(wdMaximumNumberOfRows)
End If
可用 Select 方法选定文档中的一个项目。下例选定活动文档中的第一个书签并将其显示为红色。

If ActiveDocument.Bookmarks.Count >= 1 Then
ActiveDocument.Bookmarks(1).Select
Selection.Font.ColorIndex = wdRed
End If
Selection 对象还包括了几种用于扩展或移动当前选定内容的方法。例如,可以将 MoveDown 方法的 Extend 参数设为 wdExtend。下例在活动窗口中选定接下的三段。

With Selection
.StartOf Unit:=wdParagraph, Extend:=wdMove
.MoveDown Unit:=wdParagraph, Count:=3, Extend:=wdExtend
End With
说明

可用 Range 属性从 Selection 对象返回一个 Range 对象。下例将变量 myRange 定义为所选范围。

Set myRange = Selection.Range
记录宏时,宏记录器经常将变化记录到 Selection 对象。下列宏将文档的起始两个词设为加粗格式,并新添一段。

Selection.HomeKey Unit:=wdStory
Selection.MoveRight Unit:=wdWord, Count:=2, Extend:=wdExtend
Selection.Font.Bold = wdToggle
Selection.MoveRight Unit:=wdCharacter, Count:=1
Selection.TypeParagraph
下例完成与上例相同的操作,但不使用 Selection 对象。

Set myRange = ActiveDocument.Range(Start:=0, _
End:=ActiveDocument.Words(2).End)
myRange.Bold = True
myRange.InsertParagraphAfter
每个窗格中只能有一个 Selection 对象;但在一个文档中可以有多个 Range 对象。一个 Range 对象代表了文档中一个已选定或未选定的范围。用 Range 对象可很方便地进行文档操作。详细内容,请参阅处理 Range 对象。
xz1997 2003-08-30
  • 打赏
  • 举报
回复
yonghengdizhen:对于Selection和bookmarks的用法我实在不清楚,您能说得更详细些吗?
比如:如何调用Selection的InsertFile方法实现DOC文件的合并?
万分感谢!
yonghengdizhen 2003-08-30
  • 打赏
  • 举报
回复
至于你要插入文件直接调用Selection的InsertFile方法,通过bookmarks直接插入到你想要的位置就可以了
yonghengdizhen 2003-08-30
  • 打赏
  • 举报
回复
<%
set wordApp=createobject("word.application")
set wordDoc=createobject("word.document")
strDocFile="..\1.doc"
set wordDoc=wordApp.documents.open(strDocFile)
wordDoc.SaveAs "..\11.doc"

在这里操作你的文档副本,对于内容定位你可以使用Bookmarks定位,也就是说你在模板文件中定义你需要操作内容区域为书签
然后用
if WordDoc.bookmarks.exists("你的书签名称") then
WordDoc.bookmarks("你的书签名称").select
wordApp.selection.xxxxx (这里就是操作selection的内容了,根据需要你可以直接访问
selection的tables, rows, cells, Characters,
columns, Comments,Fields,InlineShapes等等对象结合,
进行你说需要的限定范围内的任何对象集合操作
[包括对象修改,新增,删除,查找等任何功能])
end if
你用strDocContent=wordDoc.content
当然会丢失格式了


wordDoc.close
wordApp.quit '注意,任何操作必须记得调用wordapp的quit,否则将流失系统资源,导致应用服务器被锁定
set wordDoc=nothing
set wordApp=nothing %>
xz1997 2003-08-30
  • 打赏
  • 举报
回复
yonghengdizhen:selection对象在ASP中的用法实在不清楚。
ceocio:自己编了一段读取word文件内容,然后以此内容重新生成word文件的代码,如下
<%
set wordApp=createobject("word.application")
set wordDoc=createobject("word.document")
strDocFile="..\1.doc"
set wordDoc=wordApp.documents.open(strDocFile)
strDocContent=wordDoc.content
wordDoc.close
set wordDoc=nothing

set worddoc2=createobject("word.document")
wordDoc2.content=strDocContent
wordDoc2.Application.ActiveDocument.SaveAs "..\11.doc"
wordDoc2.close
set wordDoc2=nothing
set wordApp=nothing %>

运行成功,但生成DOC文件把原来文件中的图,以及公式编辑器编辑的内容丢了!
如何才能保证内容完整,无任何丢失呢?
xz1997 2003-08-29
  • 打赏
  • 举报
回复
Selection是什么?
Microsoft VBScript 运行时错误 错误 '800a01b6'

对象不支持此属性或方法: 'wordDoc.Selection'
yonghengdizhen 2003-08-29
  • 打赏
  • 举报
回复
打开其中一个document然后调用
oWordApp.Selection.Collapse Direction:=wdCollapseEnd
oWordApp.Selection.InsertFile FileName:="C:\xxxx.DOC", Link:=false
ceocio 2003-08-29
  • 打赏
  • 举报
回复
思路:将两个doc的内容读出来,再生成一个新的doc,
关于在服务器上面生成doc可以在本版搜索”生成word“和查看本版faq

28,390

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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