永发信息网

VB如对OLE控件中的word内容进行替换

答案:2  悬赏:0  手机版
解决时间 2021-02-01 05:16
  • 提问者网友:孤山下
  • 2021-01-31 14:44
我要在窗体上打开1个word文档,打开后对一些标记进行替换,原本是给word.application指定一个父窗口实现的,但是这样子会显示整个Word窗体(我只要显示文档区),所以改成用OLE控件,但OLE打开一个Word文档后,不知道如何才能通过VB程序对文档里的标记进行替换,请高手赐教。

原来链接了Word文档的OLE,ole.object就相当于word.docunment,呵呵呵
最佳答案
  • 五星知识达人网友:爱难随人意
  • 2021-01-31 16:17
曾经做过些。复制下来给你参考
我是从XML里读到数据往Word里面替换数据的。

制作一个Word模板,里面可变的内容用{$TITLE}代替
{$TITLE}
Dim wordApp As Word.Application
Set wordApp = New Word.Application
wordApp.Visible = False
Dim wordSelection As Word.Selection
Dim objDoc As Word.Document
Set objDoc = wordApp.Documents.Open("template.doc")
Set wordSelection = wordApp.Selection

ReplaceChar "{$TITLE}", xmlNode.Text
If xmlNodes.Length > 1 Then
objDoc.Tables(1).Select
Selection.InsertRowsBelow xmlNodes.Length - 1
End If

'美化Word文件:去除掉重复的段落标记。
Public Sub ReduceParagraph()
'必须写为wordApp.Selection
wordApp.Selection.Find.ClearFormatting
wordApp.Selection.Find.Replacement.ClearFormatting
With wordApp.Selection.Find
.Text = "^p^p"
.Replacement.Text = "^p"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = True
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
wordApp.Selection.Find.Execute Replace:=wdReplaceAll
End Sub

'直接将全部匹配的标签替换为结果文本。
Public Sub ReplaceChar(ReplacedStr As String, ReplacementStr As String)
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = ReplacedStr
.Replacement.Text = ReplacementStr
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = True
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
'Selection.TypeText Text:=ReplacementStr
End Sub

'从前往后,查找图片标签,然后直接插入图片,图片文件可以本地全路径或者Web全路径。
Public Sub ReplaceImg(ReplacedStr As String, ReplacementStr As String)
Selection.Find.ClearFormatting
With Selection.Find
.Text = ReplacedStr
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindStop
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = True
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=1
Selection.InlineShapes.AddPicture fileName:= _
ReplacementStr, LinkToFile:=False, _
SaveWithDocument:=True
End Sub
全部回答
  • 1楼网友:归鹤鸣
  • 2021-01-31 17:33
使用方法 (1)word为ole自动化提供一种称为“basic”的对象,要在vb中控制word ,首先要定义一个引用word中“basic”对象的对象变量:dim wordobj as object (2)将word 中的“basic”对象赋给该对象:set wordobj=createobject("word.basic") (3)可以使用大多数wordbasic语句和函数控制word或word文档,使用方法和在word宏中使用wordbasic指令的方法基本相同。 (4)关闭word:set wordobj =nothing。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯