[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
powershell区的置顶的教程就很好啊

https://learn.microsoft.com/zh-cn/office/vba/api/word.find.execute
https://learn.microsoft.com/zh-cn/office/vba/api/word(enumerations)

扩展后的可以看一下吗

TOP

回复 15# ppll2030


    非常感谢,我对上述程序做了多次,但是中文替代后依然是乱码,数字是没有问题的。不知可否再改进一下?感觉再添加一个类似UTF-8显示的命令就可以了。
再次感谢帮助!

TOP

回复 15# ppll2030


我对上述程序做了多次,但是中文替代后依然是乱码,数字是没有问题的。不知可否再改进一下? 感觉再添加一个类似UTF-8显示的命令就可以了。
再次感谢帮助!

TOP

回复 18# delab-1
未测试.
注意:vbs代码编码是ANSI,export.txt编码是Unicode.
  1. Set fso = CreateObject("Scripting.FileSystemObject")
  2. Set path = fso.GetFolder(".")
  3. Set file = fso.OpenTextFile(path & "\export.txt", 1,-1)
  4. Set wordApp = CreateObject("Word.Application")
  5. Set doc = wordApp.Documents.Open(path & "\export.docx")
  6. Do Until file.AtEndOfStream
  7.     line = file.ReadLine()
  8.     If InStr(line, "=") > 0 Then
  9.         oldstr = Split(line, "=")(0)
  10.         newstr = Split(line, "=")(1)
  11.         With doc.Content.Find
  12.         .Text = oldStr
  13.         .Replacement.Text = newStr
  14.         .Execute ,,,,,,,,,,2
  15.         End With
  16.     End If
  17. Loop
  18. file.Close
  19. doc.Save
  20. doc.Close
  21. wordApp.Quit
  22. Set fso = Nothing
  23. MsgBox "替换完成!"
复制代码
微信:flashercs
QQ:49908356

TOP

回复 18# delab-1


    为什么txt非要用utf-8呢。默认不是ANSI编码的吗
下面是按你要求修改的。
  1. Set fso = CreateObject("Scripting.FileSystemObject")
  2. Set path = fso.GetFolder(".")
  3. Set objStream = CreateObject("ADODB.Stream")
  4. objStream.Charset = "utf-8"
  5. objStream.Open
  6. objStream.LoadFromFile(path & "\export.txt")
  7. content = objStream.ReadText
  8. Set wordApp = CreateObject("Word.Application")
  9. Set doc = wordApp.Documents.Open(path & "\export.docx")
  10. line = Split(content, vbCrLf)
  11. For i = 0 To UBound(Line)
  12.     If InStr(line(i), "=") > 0 Then
  13.         oldstr = Split(line(i), "=")(0)
  14.         newstr = Split(line(i), "=")(1)
  15.         With doc.Content.Find
  16.         .Text = oldStr
  17.         .Replacement.Text = newStr
  18.         .Execute ,,,,,,,,,,2
  19.         End With
  20.     End If
  21. next
  22. doc.Save
  23. doc.Close
  24. objStream.Close
  25. wordApp.Quit
  26. Set fso = Nothing
  27. MsgBox "替换完成"
复制代码

TOP

回复 20# ppll2030


太好了,这改进程序非常好地解决了中文显示乱码问题 。还有最后一个问题请教。因为需要替代代码较多,这个时候会出现下面这个问题:
例如有两个变量:
var_prov=100
var_prov_v1=123

在运行替换中,如果var_pro出现在前面,就会把文本中的“var_prov_10”替换为“100_v1”(即:把前面的“var_prov”直接替换了),针对这个问题,在程序上有什么好办法吗?

目前,我比较笨的解决办法是,让替代变量列表排序(向下排序),这样保障长变量在前面,即保障“var_prov_v1”在“var_prov”之前,这样也可以解决问题,但是很笨的方法。

再次感谢感谢!!!:loveliness: :loveliness:

TOP

回复 21# delab-1


    就用你的"笨方法",让脚本帮你从文本末尾行开始向上读取好啦。
把代码第 14 行,改为:
  1. For i = UBound(line) to 0 step -1
复制代码

TOP

回复 22# ppll2030


    太赞了,将批处理与上述程序组合在一起,效果还是蛮不错的 太感谢了

TOP

返回列表