| 
 
kcdsw 
中级用户
 
   
 
  
  
积分 404 
发帖 179 
注册 2006-3-30 
状态 离线
 | 
『楼 主』:
 求vbs处理文本的脚本
 
使用 LLM 解释/回答一下
  
各位老师好 
因为手头上有不少doc文件需要做处理,想处理成xml格式的. 
可是word里的xml格式与我想要的不相符. 
我在网上找了很久 也不得要领. 特向大家求救! 
之所以考虑用vbs , 目的是想最终用word 的宏来实现自动处理.  
希望各位路过的兄弟们能帮我出出主意!
 原文件结构.(doc)
第一卷(卷名)第一章(章名) 
正文
 
第一卷(卷名)第二章(章名) 
正文
 
....... 
第二卷(卷名)第一章(章名) 
正文
 
第二卷(卷名)第二章(章名) 
正文
 
........
 目标结构:(xml)
<book> 
   <juan>卷名 
     <zhang>章名 
       <zhengwen>正文 
       </zhengwen> 
     </zhang>  
  </juan> 
   <juan>卷名 
     <zhang>章名 
       <zhengwen>正文 
       </zhengwen> 
     </zhang>  
  </juan> 
</book>
 在众多朋友的帮助下,终于有了解决方案 
目前输出的xml已经是标准xml了 
我还想添加上 拖拽功能,和选择框效果 
找了N多帖子,不得要领 还请各位兄弟帮忙
 
on error resume next 
dim n,y 
set ws=createobject("wscript.shell") 
set fso=createobject("scripting.filesystemobject") 
set file=fso.opentextfile("needhelp.txt",1) 
do while file.atendofstream<>true 
'去除前导空格 
n=ltrim(file.readline) 
'调用pd 
call pd(n) 
s=s & n & vbcrlf 
loop 
file.close 
 
 
h=instr(s,"<juan>第") 
jiewei=left(s,h-6):kaishi=mid(s,h-2) 
set file=fso.createtextfile("out.xml",ture) 
head ="<?xml version=""1.0"" encoding=""UTF-8""?>" & vbcrlf & "<book>" & vbcrlf  
foot =VbCrLf & "</book>" 
file.write head & kaishi & jiewei & foot 
file.close 
ws.run "explorer out.xml" 
 
sub pd(a) 
l=instr(a," ") 
z=left(a,l-1) 
 
 
'用空格分割字符 
sp=split(a," ") 
if left(z,1)="第" and right(z,1)="卷" Then  
   if y=z then  
      n="       </zhengwen>" & VbCrLf & "     </zhang>"  & "     <zhang>"& vbcrlf &  sp(0) & " " & sp(1) & " " & sp(2) & " " & sp(3) & VbCrLf & "       <zhengwen>" 
   else 
      n="       </zhengwen>" & VbCrLf & "     </zhang>" & vbcrlf & "  </juan>" & VbCrLf & "   <juan>" & sp(0) & " " & sp(1) & VbCrLf & "     <zhang>" & sp(2) & " " & sp(3) & VbCrLf & "       <zhengwen>" 
   end if 
   y=z 
   else 
      n=a 
end If 
end sub 
 
 Last edited by kcdsw on 2007-3-26 at 05:30 AM ]  
 
    
 
  
附件
1:   needhelp.txt (2007-3-25 11:20, 13.6 KiB,下载次数: 14)
 
 
 |   
 | 
  2007-3-25 08:08 | 
  
 | 
 | 
 
slore 
铂金会员
 
       
 
  
  
积分 5212 
发帖 2478 
注册 2007-2-8 
状态 离线
 | 
 | 
  2007-3-25 10:47 | 
  
 | 
 | 
 
jmz573515 
银牌会员
 
     
 
  
 
积分 1212 
发帖 464 
注册 2006-12-13 
状态 离线
 | 
 | 
  2007-3-25 10:53 | 
  
 | 
 | 
 
kcdsw 
中级用户
 
   
 
  
  
积分 404 
发帖 179 
注册 2006-3-30 
状态 离线
 | 
『第 4 楼』:
 
 
使用 LLM 解释/回答一下
  
呵呵 首先感谢楼上两位 
也感谢所有关注这个帖子的朋友. 
因为我自己不怎么懂编程.对一些高深的用法也不知道. 
 
我自己有两种想法. 
1是能够直接用word 宏来按照一定的规则来输出一个标准的xml 哪怕我再稍微手工修改一下都成,  目前这个方法还没有进入实质的阶段 
 
2,利用word的宏,能够自动在卷章前加xml的标记  
如 </zhang></juan><juan> 
然后把这个文档存成txt,再手动调整一下.就基本能满足需要了.目前这个方法还在以纯手工来实现.不知道有没有其他思路. 
 
再次谢谢 各位的关注 
 
再次感谢 
 
    
 
  
 |   
 | 
  2007-3-25 11:10 | 
  
 | 
 | 
 
kcdsw 
中级用户
 
   
 
  
  
积分 404 
发帖 179 
注册 2006-3-30 
状态 离线
 | 
『第 5 楼』:
 
 
使用 LLM 解释/回答一下
  
Originally posted by slore at 2007-3-25 10:47: 
VB好说,vbs没有里面的Like函数。。。麻烦啊  
谢谢你的回答.刚才我再次查看了word的宏,窗口的标题是micro visual basic 
我不知道这里能不能满足这个函数.
 
兄弟能再详细的解释一下么?  
 
    
 
  
 |   
 | 
  2007-3-25 11:13 | 
  
 | 
 | 
 
jmz573515 
银牌会员
 
     
 
  
 
积分 1212 
发帖 464 
注册 2006-12-13 
状态 离线
 | 
 | 
  2007-3-25 11:13 | 
  
 | 
 | 
 
kcdsw 
中级用户
 
   
 
  
  
积分 404 
发帖 179 
注册 2006-3-30 
状态 离线
 | 
『第 7 楼』:
 
 
使用 LLM 解释/回答一下
  
Originally posted by jmz573515 at 2007-3-25 11:13: 
我的意思是说VBS读取WORD(处里WORD)比较麻烦,处理文本文件能好些...  
谢谢
 
刚才没明白你的意思
 
这样也行.
 
只要能达到目的 就够了  我就是想把这些数据处理成xml  
 
    
 
  
 |   
 | 
  2007-3-25 11:17 | 
  
 | 
 | 
 
baomaboy 
银牌会员
 
     
 
  
  
积分 1513 
发帖 554 
注册 2005-12-30 
状态 离线
 | 
『第 8 楼』:
 
 
使用 LLM 解释/回答一下
  
呵呵 不懂xml这东西 所以我就只能提供编程之外的可能性了  
 
①用EmEditor作编辑器,用录制宏的方式尽可能的把大量繁重繁多的操作录制,然后你就可以一直F4了,然后改那些无法用录制宏操作的地方。 
②有一个排版方面的软件DreamEdit,如果编程无法解决的话也建议尝试下。 
 
想当初几百个.htm的模版文件.......呵呵全靠他们了。 
只是个建议,在此不一定有效^_^ 
 
    
 
  
 |   
 | 
  2007-3-25 11:35 | 
  
 | 
 | 
 
slore 
铂金会员
 
       
 
  
  
积分 5212 
发帖 2478 
注册 2007-2-8 
状态 离线
 | 
『第 9 楼』:
 
 
使用 LLM 解释/回答一下
  
result="第一卷(卷名)第一章(章名)" Like "第*卷(*)第*章(*)" 
这个返回true! 
 
所以可以判断那行包含卷名和章名,然后利用instr和mid可以截取到他们 
result是false的部分那么就是正文了! 
 
 Last edited by slore on 2007-3-24 at 11:30 PM ] 
 
    
 
  
 |   
 | 
  2007-3-25 11:49 | 
  
 | 
 | 
 
jmz573515 
银牌会员
 
     
 
  
 
积分 1212 
发帖 464 
注册 2006-12-13 
状态 离线
 | 
『第 10 楼』:
 
 
使用 LLM 解释/回答一下
  
不知道可不可以,请在测试后使用... 
 
on error resume next 
dim n 
set ws=createobject("wscript.shell") 
set fso=createobject("scripting.filesystemobject") 
set file=fso.opentextfile("needhelp.txt",1) 
do while file.atendofstream<>true 
n=ltrim(file.readline) 
call pd(n) 
s=s & n & vbcrlf 
loop 
file.close 
 
h=instr(s,"<juan>第") 
jiewei=left(s,h-6):kaishi=mid(s,h-2) 
set file=fso.createtextfile("out.xml") 
file.write "<book>" & vbcrlf 
file.write kaishi & jiewei & vbcrlf 
file.write "</book>" 
file.close 
ws.run "notepad.exe out.xml" 
 
sub pd(a) 
l=instr(a," ") 
z=left(a,l-1) 
sp=split(a," ") 
if left(z,1)="第" and right(z,1)="卷" then 
n="       </zhengwen>" & vbcrlf & "     </zhang>" & vbcrlf & "  </juan>" & vbcrlf & "   <juan>" & sp(0) & " " & sp(1) & vbcrlf & "     <zhang>" & sp(2) & " " & sp(3) & vbcrlf & "       <zhengwen>" 
else 
n=a 
end if 
end sub 
  
 
    
 
  
 |   
 | 
  2007-3-25 22:00 | 
  
 | 
 | 
 
everest79 
金牌会员
 
       一叶枝头,万树皆春
  
  
积分 2564 
发帖 1127 
注册 2006-12-25 
状态 离线
 | 
『第 11 楼』:
 
 
使用 LLM 解释/回答一下
  
word内置强大的逻辑替换工具,你可以直接将代码替换进去后另存为txt格式再改名为xml就行了 
 
    
 
  
 |   
 | 
  2007-3-25 22:48 | 
  
 | 
 | 
 
slore 
铂金会员
 
       
 
  
  
积分 5212 
发帖 2478 
注册 2007-2-8 
状态 离线
 | 
『第 12 楼』:
 
 
使用 LLM 解释/回答一下
  
left(z,1)="第" and right(z,1)="卷"? 
 
正文如果也满足这个条件不难吧? 
 
    
 
  
 |   
 | 
  2007-3-25 22:57 | 
  
 | 
 | 
 
kcdsw 
中级用户
 
   
 
  
  
积分 404 
发帖 179 
注册 2006-3-30 
状态 离线
 | 
『第 13 楼』:
 
 
使用 LLM 解释/回答一下
  
Originally posted by slore at 2007-3-25 22:57: 
left(z,1)="第" and right(z,1)="卷"? 
 
正文如果也满足这个条件不难吧?  
是不是说正文如果有了这样的数据 会出问题?  
 
    
 
  
 |   
 | 
  2007-3-25 23:58 | 
  
 | 
 | 
 
kcdsw 
中级用户
 
   
 
  
  
积分 404 
发帖 179 
注册 2006-3-30 
状态 离线
 | 
『第 14 楼』:
 
 
使用 LLM 解释/回答一下
  
Originally posted by jmz573515 at 2007-3-25 22:00: 
不知道可不可以,请在测试后使用... 
 
on error resume next 
dim n 
set ws=createobject("wscript.shell") 
set fso=createobject("scripting.filesystemobject") 
 ... 
  
非常感谢关注本帖的朋友 
感谢你的代码 
我这里测试了一下  成功了. 
可能还有一些其他的问题,目前正在研究你的代码
 
问题: 
卷章嵌套不正确
 
卷一 
   章一 
   章二 
卷二 
   章一 
   章二  
 
    
 
  
 |   
 | 
  2007-3-26 00:00 | 
  
 | 
 | 
 
kcdsw 
中级用户
 
   
 
  
  
积分 404 
发帖 179 
注册 2006-3-30 
状态 离线
 | 
『第 15 楼』:
 
 
使用 LLM 解释/回答一下
  
Originally posted by everest79 at 2007-3-25 22:48: 
word内置强大的逻辑替换工具,你可以直接将代码替换进去后另存为txt格式再改名为xml就行了  
我只会用简单的替换   
还望赐教  
 
    
 
  
 |   
 | 
  2007-3-26 00:07 | 
  
 |