CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  基础类

这个功能怎么来实现

楼主a2048(你好吗)2004-11-01 19:38:32 在 VB / 基础类 提问

Private   Sub   Command1_Click()  
  Dim   objFSO  
  Set   objFSO   =   CreateObject("Scripting.FileSystemObject")  
  If   Not   objFSO.FileExists("c:\a.txt")   Then  
          MsgBox   "a.txt   is   not   exist!"  
          Exit   Sub  
  End   If  
   
  Const   ForReading   =   1  
  Set   txtFile   =   objFSO.OpenTextFile("c:\a.txt",   ForReading)  
  strLine   =   txtFile.Readline  
   
  Dim   tmp  
  tmp   =   Split(strLine,   "@")  
  'MsgBox   tmp(0)  
  'MsgBox   tmp(1)  
  'MsgBox   tmp(2)  
   
  Dim   docApp  
  Set   docApp   =   CreateObject("Word.Application")  
  docApp.Visible   =   True  
  Set   qq   =   docApp.Documents.Open("C:\abc\dong\qq.doc")  
  Set   doc1   =   docApp.Documents.Open(tmp(2))  
  doc1.Activate  
  docApp.Selection.WholeStory  
  docApp.Selection.Copy  
  qq.Activate  
  docApp.Selection.WholeStory  
  docApp.Selection.Paste  
   
  docApp.Selection.Find.ClearFormatting  
          With   docApp.Selection.Find  
                  .Text   =   "姓名"  
                  .Replacement.Text   =   ""  
                  .Forward   =   True  
                  .Wrap   =   1  
                  .Format   =   False  
                  .MatchCase   =   False  
                  .MatchWholeWord   =   False  
                  .MatchByte   =   False  
                  .MatchAllWordForms   =   False  
                  .MatchSoundsLike   =   False  
                  .MatchWildcards   =   False  
                  .MatchFuzzy   =   True  
          End   With  
  docApp.Selection.Find.Execute  
  docApp.Selection.TypeText   tmp(0)  
   
  docApp.Selection.Find.ClearFormatting  
          With   docApp.Selection.Find  
                  .Text   =   "地点"  
                  .Replacement.Text   =   ""  
                  .Forward   =   True  
                  .Wrap   =   1  
                  .Format   =   False  
                  .MatchCase   =   False  
                  .MatchWholeWord   =   False  
                  .MatchByte   =   False  
                  .MatchAllWordForms   =   False  
                  .MatchSoundsLike   =   False  
                  .MatchWildcards   =   False  
                  .MatchFuzzy   =   True  
          End   With  
  docApp.Selection.Find.Execute  
  docApp.Selection.TypeText   tmp(1)  
   
  qq.Save  
  qq.Close  
  doc1.Close  
   
  Set   qq   =   Nothing  
  Set   doc1   =   Nothing  
  docApp.Quit  
  Set   docApp   =   Nothing  
  Set   objFSO   =   Nothing  
   
  End   Sub  
   
  以上代码实现的功能是:  
  在C盘有个文件,例如c:\a.txt文件,这个文件有这样的数据:小黄@上海@C:\abc\dong\姓名表.doc;还有另外一个C:\abc\dong\qq.doc,这个qq.doc是个没有数据的word,也就是空白的word。  
  在这个姓名表.doc里有二个中括号,中括号里分别是姓名和地点,例如:[姓名]     [地点]  
  a.txt里的小黄和上海二个数据读入到姓名表.doc里,读完后就自动把姓名表.doc的全部内容移到qq.doc里,移完后姓名表.doc这个文件就恢复到读数据之前以被下一次重复使用,  
  说明:1、c:\a.txt文件里的数据是随时可以修改的,例如:可以改成小将@北京@C:\abc\dong\报名.doc。但上面的只有三个数据分别用@标记分开,他们的含义是姓名、地点、所要调用的word路径,但数据长度不一定相等的。  
  2、C:\abc\dong\目录下的word模板有很多种。例如还有报名.doc等等。  
   
   
  我现在的问题1、就是a.txt是数据是小黄@上海@C:\abc\dong\姓名表.doc   在姓名表.doc里如果就要[地点]那怎么解决?  
  2、假如a.txt的数据增加了变成小黄@上海@2004-05-09@C:\abc\dong\报名表.doc     这时报名表.doc要的数据是[姓名]     [地点]     [那年]     [那月]       [那日]     也就是小黄替换[姓名];上海替换[地点];2004替换[那年];05替换[那月];09替换[那日];  
   
  问题点数:30、回复次数:6Top

1 楼aijie099(罗漫年华)回复于 2004-11-01 20:19:02 得分 0

word   不是有个模版文件,对模版编程,是不是,好做一点儿呢!Top

2 楼kmzs(.:RNPA:.山水岿濛)回复于 2004-11-01 20:43:47 得分 0

似乎用   VBA更容易实现一点Top

3 楼a2048(你好吗)回复于 2004-11-02 10:34:25 得分 0

楼上那位请你用VBA指点一下,用些代码来示范可以吗?Top

4 楼a2048(你好吗)回复于 2004-11-08 08:15:16 得分 0

没办法!只好自己想办法Top

5 楼of123()回复于 2004-11-08 08:34:40 得分 30

1  
  只要地点:把下面这段删除:  
  docApp.Selection.Find.ClearFormatting  
          With   docApp.Selection.Find  
                  .Text   =   "姓名"  
                  .Replacement.Text   =   ""  
                  ......  
          End   With  
  docApp.Selection.Find.Execute  
  docApp.Selection.TypeText   tmp(0)  
   
  2  
  1.   在   tmp   =   Split(strLine,   "@")   之前家一句  
          strLine   =   Replace(strline,"-","@")  
   
  2     增加下列代码:  
  docApp.Selection.Find.ClearFormatting  
          With   docApp.Selection.Find  
                  .Text   =   "那年"  
                  .Replacement.Text   =   ""  
                  .Forward   =   True  
                  .Wrap   =   1  
                  .Format   =   False  
                  .MatchCase   =   False  
                  .MatchWholeWord   =   False  
                  .MatchByte   =   False  
                  .MatchAllWordForms   =   False  
                  .MatchSoundsLike   =   False  
                  .MatchWildcards   =   False  
                  .MatchFuzzy   =   True  
          End   With  
  docApp.Selection.Find.Execute  
  docApp.Selection.TypeText   tmp(2)  
   
  docApp.Selection.Find.ClearFormatting  
          With   docApp.Selection.Find  
                  .Text   =   "那月"  
                  .Replacement.Text   =   ""  
                  .Forward   =   True  
                  .Wrap   =   1  
                  .Format   =   False  
                  .MatchCase   =   False  
                  .MatchWholeWord   =   False  
                  .MatchByte   =   False  
                  .MatchAllWordForms   =   False  
                  .MatchSoundsLike   =   False  
                  .MatchWildcards   =   False  
                  .MatchFuzzy   =   True  
          End   With  
  docApp.Selection.Find.Execute  
  docApp.Selection.TypeText   tmp(3)  
   
  docApp.Selection.Find.ClearFormatting  
          With   docApp.Selection.Find  
                  .Text   =   "那日"  
                  .Replacement.Text   =   ""  
                  .Forward   =   True  
                  .Wrap   =   1  
                  .Format   =   False  
                  .MatchCase   =   False  
                  .MatchWholeWord   =   False  
                  .MatchByte   =   False  
                  .MatchAllWordForms   =   False  
                  .MatchSoundsLike   =   False  
                  .MatchWildcards   =   False  
                  .MatchFuzzy   =   True  
          End   With  
  docApp.Selection.Find.Execute  
  docApp.Selection.TypeText   tmp(4)  
   
  >谢谢你的回答。其实我的第一个问题不能象你说讲的删除些代码就好了,因为c:\a.txt文件里的数据是随时可以修改的,例如:可以改成小将@北京@C:\abc\dong\报名.doc。上面的三个数据分别用@标记分开,他们的含义和顺序是固定的分别是姓名、地点、所要调用的word路径。也就是说有些doc文件是要[姓名]     [地点]   二个数据的;有些要一个的。能否做到doc文件里要哪个数据就读入那个数据,例如报名表.doc要[姓名]     [地点]   二个数据,那就要把a.txt里的小将和北京二个数据读进去。  
   
  你没有想通。  
  tmp   =   Split(strLine,   "@")  
  语句已经把你的字符串切分过程了数组,有   N   个   @   就有   N+1   个元素。你只要挑你需要的就行了。只要将   [姓名]     [地点]   等对象与数据顺序的下标一一对应即可。因为你的代码中是搜索[姓名]     [地点]等关键字的,然后填入相应下标的数据元素。所以只要在需要数据少的地方删除你多余的代码即可。Top

6 楼lyxhappy(RosyClouds)回复于 2004-11-08 09:14:21 得分 0

UPTop

相关问题

  • 这个功能应该怎么实现?
  • 这个功能怎么实现的?
  • 这个功能是怎么实现的
  • 这个功能怎么实现?
  • 请问这个功能怎么实现?
  • 请看这个功能怎么实现
  • 怎么实现这个功能?
  • 怎么用javascript实现这个功能
  • 怎么实现这个功能?
  • 这个功能怎么实现???

关键词

  • 数据
  • 文件
  • 代码
  • word
  • docapp
  • 姓名
  • dong
  • doc
  • 地点
  • executedocapp

得分解答快速导航

  • 帖主:a2048
  • of123

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo