用Delphi、VB控制替换Word文章内容,100分请教,晓玫有礼了。

wuxiaomei 2000-05-31 11:00:00
大虾们,大家好
我是xiaomei,听朋友介绍,刚到CSDN,看到这么热闹,真是高兴,小妹在此有礼了。
我在做研毕业论文时遇到一个问题,恳请大虾们帮忙:

我想用VB或DELPHI处理一篇Word文章,要求将文章的固定文字替换成其他内容,比如将文章中的“写作单位”换成“中科院数学所”,可能有多处需替换,怎么实现呢?


大家可要帮忙噢!!

xiaomeiwu@fm365.com

晓玫
...全文
363 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
太极狮头 2000-06-02
  • 打赏
  • 举报
回复
你可以去microsoft.com去搜索一下
关键字document等等,会有些发现
太极狮头 2000-06-01
  • 打赏
  • 举报
回复
上述代码是可以完成任务的,但是它的效率不高,从代码来看,它并不是真正的面向对象,另外,你不要用GOTO语句,这从专业角度来看是很忌讳的,我正在翻译编码规范,不过是Delphi的,如果你没有读过软件工程的话,最好看看,我可以把英文的给你,这对你写代码很有好处。
随便说一句用 .Find的效率不高,如果你不太讲究效率的话就用它吧,但如果你对替换速度要求高的话,只好去买专门的工具软件了,(我们公司的就是买的速度不可同日而语),不过要几万,呵呵。
vb是很简单尤其对你写其他的模块,但它的问题也很多,各种各样的,测试啦,速度啦,安装啦,调试啦,总之,很麻烦,
你可以用delphi,虽然写的时候略烦(对初学者来说),你看看delphi5里有关于ole的demo吧。有什么问题可以在问
cimsnet 2000-06-01
  • 打赏
  • 举报
回复
一般来江,用VB控制WORD的最好的方法就是在WORD中先录制你要求的的操作,
然后在VB中进行编辑,加入需要的代码即可。
录制宏可解决大部分WORD变成的问题。
Asima 2000-06-01
  • 打赏
  • 举报
回复
To tbase:
多谢指教,其实我现在就是在用Delphi,之所以用VB写了上边一段代码是因为我可以从Word中录制宏得到Word Basic 的代码。另外用GoTo 是因为VB的错误处理方法很有限,对VB的缺点我也很清楚。
如果方便的话,就把你说的代码规范Mail给我吧。
E_mail: asima_shj@sina.com
再次表示感谢,以后有空会向您请教的。
mxp 2000-05-31
  • 打赏
  • 举报
回复
在vb中
(1)
引用Microsoft Word *.0 Library (*.0表示word版本,小心不兼容)

(2)代码示例(查一个word文档tt.doc中文字aaaaaa是否黑体(可操作宏)
dim word as object
set word=createobject("word.application")
word.documents.open "d:\tt.doc"
with word.selection.find
.text="aaaaaa"
.forward=true
.warp=wdfindcontine
..matchbyte=true
end with
word.selection find.execute
if word.selection.style="黑体"
......
end if
kxy 2000-05-31
  • 打赏
  • 举报
回复
你如果用delphi5,简单的象写一个一.
D:\Program Files\Borland\Delphi5\Demos\Activex\Oleauto\SrvComp\Word
有一个例子.
ezwyj 2000-05-31
  • 打赏
  • 举报
回复
VB控制WORD的资料比较难找,有一种方法可以得到,那就是在WORD中录制宏,然后编缉它
这样可有许多命令得到。
wuxiaomei 2000-05-31
  • 打赏
  • 举报
回复
问题刚提出来,大家就这么积极的帮我回答问题,让初来乍到就感受到CSDN的热情。
真的多谢各位大哥、大姐帮忙。
我做一下试验,如有问题,还要麻烦大家噢。

以后我会经常到这里来的。

晓玫
Asima 2000-05-31
  • 打赏
  • 举报
回复
我做了一个比较完整的例子
Dim MyWd As Object '用于存放 Microsoft Word 引用的变量。
Dim MyDoc As Object
Dim WordWasNotRunning As Boolean
Dim DocWasNotOpened As Boolean

Private Sub Get_Word()
On Error GoTo Open_word '不带第一个参数调用 Getobject 函数将
'返回对该应用程序的实例的引用,如果该应用程序不在运行,则会产生错误。
Set MyWd = GetObject(, "Word.Application")
GoTo Set_Visible
Open_word:
Set MyWd = CreateObject("Word.Application")
'如果发生错误则要创建一个Word.Application对象
WordWasNotRunning = True '表明Word是由程序启动的,最后应该关闭
Err.Clear
Set_Visible:
MyWd.Visible = True
MyWd.Activate
End Sub

Private Sub Get_Doc()
Dim MyFile As String
Dim i As Integer
'检测 Microsoft Excel。如果 Microsoft Excel 在运行,
'则将其加入运行对象表。
'DetectExcel

'将对象变量设为对要看的文件的引用。
MyFile = "f:\shj.doc" '改为你的文件所在的绝对路径
If Dir(MyFile) = "" Then Exit Sub
With MyWd
For i = 1 To .Documents.Count
If StrConv(.Documents(i).fullname, vbUpperCase) _
= StrConv(MyFile, vbUpperCase) Then
Set MyDoc = .Documents(i)
GoTo Set_Active
End If
Next
End With
Set MyDoc = GetObject("f:\shj.doc", "Word.Document")
DocWasNotOpened = True
Set_Active:
MyDoc.Activate
'在此处对文件进行操作。
MyDoc.Select
With MyWd.Selection.Find
.ClearFormatting
While .Execute("写作单位") '被替换的内容
MyWd.Selection.TypeText Text:="中科院数学所" '替换后的内容
Wend
End With

'如果不想要自动退出就吧下边几行注释掉
'''''''''''''''''''''''''''''''''''''''''''''
If WordWasNotRunning Then
MyWd.Quit
Else
If DocWasNotOpened Then MyDoc.Close
End If
''''''''''''''''''''''''''''''''''''''''''''
Set MyWd = Nothing '释放对象
Set MyDoc = Nothing
End Sub

Private Sub Command1_Click()
Get_Word
Get_Doc
WordWasNotRunning = False
DocWasNotOpened = False
End Sub
flylt 2000-05-31
  • 打赏
  • 举报
回复
用标签可以实现你所要求的功能,这也是我们做生成固定格式文档的一种方法。
首先要作文档模板,在文档模板中定义标签(下面程序定义了一Name:ssss,text:aaaa的标签),下面程序单击按扭可将aaaa改为llll.
mxp 的方法较为灵活,我这中方法对付固定格式的文档很好,而且很准确。

Private Sub Command1_Click()
Dim word As Object
Dim o
Dim selection
Dim doc
Set word = CreateObject("word.application")
Set doc = word.documents.open("c:\d.doc")
o = doc.bookmarks("ssss")
doc.bookmarks("ssss").Select
Set selection = word.selection
selection.Text = "llll"
word.Visible = True
End Sub

7,759

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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