ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 5217|回复: 19

求VBA代码

[复制链接]

TA的精华主题

TA的得分主题

发表于 2005-9-15 22:13 | 显示全部楼层 |阅读模式

在这个论坛上求教了很多问题,竟然使我这个从未接触过VBA的人编出了一个非常漂亮的模板。为感谢版主和各位的不厌其烦,我现在经常来论坛上看看,力所能及地回答了一些比我还菜的菜鸟提出的问题,也算回报吧。

我是中学化学教师,利用Word和自然码输入法的功能,在编写一个另类的软件或说模板,可按汉字词组的编码直接输入化学式、反应条件、化学方程式等化学内容,速度奇快,可以说有点创意。

剩下一个问题,原本打算用自动更正解决,求教版主和各位后,知道行不通,现在有个新的思路,要编写一个宏,达到如下目的:

①记住光标位置。 ②将光标移到文件开头。 ③循环查找一些特定字符(实际是造字的)将其替换成指定字符(必须带有格式),只能在“后台”运行,无需人工干预。举例:将“艽”、“虬”分别替换为“C2”、 “C3”。 ④将光标移到原来位置。 ③自动保存文件,若是新建文件,要和标准保存对话框一样对话。或调用标准保存功能。

求教版主等各位大侠能否解决。

[此贴子已经被作者于2005-9-15 22:54:45编辑过]

TA的精华主题

TA的得分主题

发表于 2005-9-16 08:23 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
'* +++++++++++++++++++++++++++++ '* Created By I Love You_Word!@ExcelHome 2005-9-16 08:23:46 '仅测试于System: Windows NT Word: 10.0 Language: 2052 '№ 00030^The Code CopyIn [ThisDocument-ThisDocument]^' '* -----------------------------

Sub ReplaceText() '将文档中一些特定的词更换为活动文档关联模板中的带格式的自动图文集 Dim i As Range, myTextEntries As String, myWord As Range Dim TempRange As Range '取得关联模板中自动图文集的词条并以|分隔,以精确定位 myTextEntries = "平方|立方|艽|虬|记录|" On Error Resume Next '忽略错误 Application.ScreenUpdating = False '关闭屏幕更新 With ActiveDocument '活动文档 Set TempRange = .Content '先定义一个RANGE对象为全文档 GN: For Each i In TempRange.Words '遍历指定RANGE对象中的词 If i.Characters(1) Like "[一-龥]" Then '如果是中文汉字 If VBA.InStr(myTextEntries, i & "|") > 0 Then '如果与词条中的词一致 '替换为自动图文集词条对应的内容,并保留格式 .AttachedTemplate.AutoTextEntries(i).Insert i, RichText:=True i.InsertAfter " " '插入一个空格,目的是分隔一下 '重新定义一个RANGE对象,为自动集文图文本后为起点,终点为文档结束的RANGE对象 Set TempRange = .Range(i.End, .Content.End) ' TempRange.Select GoTo GN '转到指定的行,重新开始循环 End If End If Next End With Application.ScreenUpdating = True '恢复屏幕更新 End Sub '---------------------- Sub GetAllAutoTextEntries() '取得活动文档关联模板中的自动图文集词条 Dim oTextEntry As AutoTextEntry, myString As String On Error Resume Next With ThisDocument For Each oTextEntry In .AttachedTemplate.AutoTextEntries myString = myString & oTextEntry.Name & "|" Next Debug.Print myString .Variables("AllTextEntry").Value = myString .Variables.Add Name:="AllTextEntry", Value:=myString End With End Sub '----------------------

求VBA代码

求VBA代码

求VBA代码

求VBA代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-9-16 12:32 | 显示全部楼层

不好意思,水平太差,年龄大了又不想学,老麻烦别人。

守老大的代码不知我是那儿弄错了不能运行。

再问老大,我用录制的办法直接查找—删除—写出对应字符的办法怎么样?

Sub 替换并存盘() ' ' 替换并存盘 Macro ' 宏在 2005-9-16 由 yuyvtul 录制 ' Selection.Find.ClearFormatting With Selection.Find .Text = "艽" End With Selection.Find.Execute Selection.TypeText Text:="H2" Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend Selection.Font.Subscript = wdToggle Selection.MoveRight Unit:=wdCharacter, Count:=1 Selection.Font.Subscript = wdToggle Selection.Find.ClearFormatting With Selection.Find .Text = "﨣" End With Selection.Find.Execute Selection.TypeText Text:="O2" Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend Selection.Font.Subscript = wdToggle Selection.MoveRight Unit:=wdCharacter, Count:=1 Selection.Font.Subscript = wdToggle End Sub

若可以,几个问题还要求教:

①代码如何简化?

②如何循环?

③若无此字符怎样处理?现在是多余地输入了字符。

④最后光标如何回到开始位置?

⑤如何调用标准存盘程序?

⑥运行时为什么“艽﨣”两个字有些还在?

⑦为何字体变了?英文O成了宋体。

[此贴子已经被作者于2005-9-16 12:38:21编辑过]

TA的精华主题

TA的得分主题

发表于 2005-9-17 07:04 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

你先把我的代码消化了再说!

把你需要的更正的带格式的内容,保存于当前模板中。

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-9-17 18:15 | 显示全部楼层

呜呜!我真菜

身体素质、消化功能太差,真的消化不了。

按版主的代码,我那个地方错了?

将代码拷贝了,自动图文集也作了,就是运行时,无动静,呜呜。

将模板、测试文本都发上来啦。

另外,为什么退出文本时,提问是否保存模板的更改?我没主动改呀?无论是还是否,模板文件好像都没动。

zURI0G6G.rar (110.93 KB, 下载次数: 15)
[此贴子已经被作者于2005-9-17 21:44:48编辑过]

TA的精华主题

TA的得分主题

发表于 2005-9-18 07:08 | 显示全部楼层

全错了!

几个问题:

你的自动图文集必须保存在“化学”模板中,与NORMAL.DOT无关.请注意,保存自动图文集时,应使用插入/自动图文集/自动图文集选项卡,注意,查找范围中,必须为"化学模板".

命名时的注意事项:

由于WORD自身功能的限制和你的模板本身用户在录入编辑过程中的限制,自动图文集的词条必须规避一些常用字\常用词,比如,你不能命名为"我"\"我们"\"的"等等,也不能命名为"红色字符"这样的组合词结构,因为WORD中循环中,根据无法判断这是否是一个词.

要点:尽量使用生僻字和易于表达或者理解的词,如平方米\立方米是一个词.

在化学模板中新建好了各个自动图文集后,再在VBE窗口中,按下CTRL+G,出现立即窗口,在代码窗口中,运行"GetAllAutoTextEntries",立即窗口中,会显示以"|"为分隔符的所有当前模板(化学)中的自动图文集词条名,请审核这些词条名,确保为非常用字和确保为词组(建议不要超过三个字长度/每个词条)

然后,你可以在此模板中,或者以此模板新建文档中,根据指定的字符输入,运行"ReplaceText"过程,即可.

[此贴子已经被作者于2005-9-18 7:12:38编辑过]
OOgWFcOx.bmp

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-9-18 07:34 | 显示全部楼层

谢谢。

版主教导的,除自动图文集必须保存在“化学”模板中我疏忽了以外,其他的我原来都不知道。

正在测试。

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-9-18 08:21 | 显示全部楼层

好了,谢谢版主。但新问题又来了,我都不好意思再问。

①夹在常用字词和一些汉字中的不能更正。

②自造字符等特殊字不能更正,代码中“If i.Characters(1) Like "[一-龥]" Then '如果是中文汉字”的"[一-龥]" 应为汉字,但他未包括自造字符等特殊字符,我的自造字符保存在FBA0-BCFF区。

③我需要这个代码包含保存文件功能,即不需另行点击其它按钮,在点击保存文件按钮(当然是自建的按钮或取代了Word内部的保存按钮)的同时实现,这样在别人使用时较方便。不知怎样实现?

[此贴子已经被作者于2005-9-18 15:49:16编辑过]
C28lR7eI.jpg
Nq9Vd2x1.jpg

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-9-18 15:51 | 显示全部楼层
我真不知道那儿错了,高手请指导。

TA的精华主题

TA的得分主题

发表于 2005-9-19 06:02 | 显示全部楼层
以下是引用yuyvtul在2005-9-18 15:51:19的发言: 我真不知道那儿错了,高手请指导。

不要偿试自造词,那样会对程序很不利,另外,我也说了,不要使用英文命名的自动图文集。

一个好的作品,除了一个合理的前台设置(当然此处指自动图文集的命名),为后台VBA提高运行速度,简单代码和减少判断,将会起到相当关键的作用。

对于新手而言,由于对WORD自身前台功能不甚了解,加之对于WORD后面理解更肤浅,往往编程也是差强人意,事倍功半,得不偿失。

比如,我们有些会员以文字定位,进行添加或者删除某个段落中的文本,与表格中某单元格的文本增减,在WORD代码定位中,差异是巨大的,也白了,也就是不要自缚手脚。

命名固定形象法最好,但也应注意程序实际识别能力。

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-15 17:28 , Processed in 0.043210 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表