邱显帅 发表于 2019-7-9 00:31

VBScipt脚本如何调用word文档的查找替换功能?

本人想用Word文档打开一个文件,然后替换里面的几个字符,比如:不过人家的渔船一般都是中型渔船,聂云这种单人作业的小渔船已经越来越少了,工业化发展带来的是集群效应,大中型渔船的捕捞不论从效率还是利润来看,都超出聂云这种小渔船不知道多少倍。把这段文字里的逗号,替换成^P实现换行,求大神告知该怎么做?

ayx365 发表于 2019-7-9 01:35

用查找(ctrl+F)里的替换就可以了

error3 发表于 2019-7-9 04:23

如果想用VB脚本来做的话,会相当麻烦,需要引用一个word编辑控件。远不如在word里直接操作,简单省事儿。

mxc123 发表于 2019-7-9 09:42



例子:
Dim objWord
Dim ObjDoc

Set objWord = CreateObject("Word.Application")
objWord.Visible = False

Set ObjDoc = objWord.Documents.Open("F:\桌面\Test.docx")'自行修改

With objWord.Selection.Find
    .Text = ","
    .Replacement.Text = "^p"
    .Forward = True
    .Wrap = wdFindContinue
    .Format = False
    .MatchCase = False
    .MatchWholeWord = False
    .MatchByte = True
    .MatchWildcards = False
    .MatchSoundsLike = False
    .MatchAllWordForms = False
    .Execute , , , , , , , , , , 2
End With
MsgBox("处理完毕")
ObjDoc.Save
objWord.Quit


可以参考http://ask.zol.com.cn/x/8070991.html
弄成拖入处理

Vjmms 发表于 2019-7-9 10:28

Const wdReplaceAll = 2
Set objWord = CreateObject("Word.Application")

objWord.Visible = True

Set objDoc = objWord.Documents.Open("D:\Demo.docx") '换成你的文档的绝对路径,如果批量处理时可考虑把路径存在文本文件里
Set objFind = objWord.ActiveWindow.Selection.Find
objFind.Forward = true
objFind.Text = ","
objFind.Replacement.Text = "^l" 'Word 2013版本的手动换行符
objFind.Execute ,,,,,,,,,,wdReplaceAll

objDoc.Close()
objWord.Quit()

邱显帅 发表于 2019-7-10 03:49

Vjmms 发表于 2019-7-9 10:28
Const wdReplaceAll = 2
Set objWord = CreateObject("Word.Application")



谢谢大神,可以用

邱显帅 发表于 2019-7-10 03:50

mxc123 发表于 2019-7-9 09:42
例子:
Dim objWord
Dim ObjDoc


谢谢大神,测试成功,可以用

邱显帅 发表于 2019-7-10 03:53

@mxc123@Vjmms 两位大神, 如果是用vbs代码替换一个TXT文本里的第15行的一整行内容,要怎么实现呢?

mxc123 发表于 2019-7-10 10:02

文本比较小可以试一下,性能应该不咋滴

Dim FSO
Dim OldFile
Dim NewFile
Dim textline
Dim replacetext
Dim LineCount
LineCount = 1

replacetext = "52pojie.cn" '要替换的文本

Set FSO = CreateObject("Scripting.FileSystemObject")
Set OldFile = FSO.OpenTextfile("OldFile.txt")   '原文本
Set NewFile = FSO.CreateTextFile("NewFile.txt",True) '生成新的文本

Do While OldFile.AtEndOfStream<> True
    if LineCount = 15 then'第15行
      Call NewFile.Writeline(replacetext)
      textline = OldFile.Readline'跳过一行
    else
      textline = OldFile.Readline'按行读取
      Call NewFile.Writeline(textline)
    end if
    LineCount = LineCount + 1
Loop
OldFile.close
NewFile.close
MsgBox("处理完毕")
页: [1]
查看完整版本: VBScipt脚本如何调用word文档的查找替换功能?