这个功能怎么来实现

a2048 2004-11-01 07:38:32
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替换[那日];

...全文
192 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyxhappy 2004-11-08
  • 打赏
  • 举报
回复
UP
of123 2004-11-08
  • 打赏
  • 举报
回复
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 个元素。你只要挑你需要的就行了。只要将 [姓名] [地点] 等对象与数据顺序的下标一一对应即可。因为你的代码中是搜索[姓名] [地点]等关键字的,然后填入相应下标的数据元素。所以只要在需要数据少的地方删除你多余的代码即可。
a2048 2004-11-08
  • 打赏
  • 举报
回复
没办法!只好自己想办法
a2048 2004-11-02
  • 打赏
  • 举报
回复
楼上那位请你用VBA指点一下,用些代码来示范可以吗?
kmzs 2004-11-01
  • 打赏
  • 举报
回复
似乎用 VBA更容易实现一点
aijie099 2004-11-01
  • 打赏
  • 举报
回复
word 不是有个模版文件,对模版编程,是不是,好做一点儿呢!
一、项目简介 本项目(HF24075 SDFeatureRivertraining)是一套以多路 PWM 多彩 LED 灯光控制为核心的固件方案,基于 PADAUK PMS 系列单片机。方案对蓝、青、粉等多色 LED 进行独立 PWM 调光,实现呼吸、渐变、流水等细腻灯光效果,并支持按键切换与传感器交互。其 PWM 调光结构清晰,是学习单片机 PWM、色彩混合与灯光算法的理想范例。 核心应用场景: 1. 氛围灯 / 流水灯产品开发 2. PWM 调光与色彩混合学习 3. 电子类课程设计 / 毕业设计 4. 灯光艺术与 DIY 项目 适配使用场景:学习练手、毕业设计、课程设计、创业售卖、实操实训,突出实用性与可落地性。 二、硬件核心配置 · 主控芯片:PADAUK(应广科技)PMS 系列 8 位 OTP 单片机 · 外接外设: - 多色 LED 灯组(蓝 / 青 / 粉等多路独立 PWM) - 轻触按键(模式切换) - 传感器(交互触发) · 操控设备: - 机身实体按键操控 三、核心功能介绍 1. 多路独立 PWM 调光:蓝、青、粉等 LED 各自独立占空比控制,实现精准亮度; 2. 呼吸 / 渐变 / 流水效果:通过 PWM 变化曲线营造丰富灯光律动; 3. 按键切换模式:轻触在多种灯效间循环切换; 4. 传感器交互:外部传感信号触发或联动灯光变化; 5. 低功耗设计:闲置进入低功耗,按需唤醒。 6. 参数可配:亮灭周期、渐变速度等可调,便于定制。 四、项目优势与亮点 · 灯光细腻:多路独立 PWM,效果远胜简单开关灯。 · 算法清晰:呼吸 / 渐变实现简洁,易于理解与移植。 · 扩展性强:可轻松增加颜色与模式,适配各类灯饰。 ·

7,788

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧