ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[原创] 投石问路——化学文档输入及化学文档转化器

[复制链接]

TA的精华主题

TA的得分主题

发表于 2013-1-30 21:55 | 显示全部楼层 |阅读模式
本帖最后由 wenz 于 2013-1-30 21:55 编辑

化学文档编辑转化.ppt 化学文档编辑转化.rar (46.59 KB, 下载次数: 79)
了解化学文档的人应当知道。输入化学文档是一件烦火的事。Word文档拷入Powerpoint格式尽失,于是萌动做一个转化器,能把通篇的文本文档一次转化为化学文档。经过下决心,学习Powerpoint的VBA编程,建立转化模型,编制代码,完成测试,有了目前的这个作品,我手头没有很多的文档用于测试,不敢保证都能完美转化。有兴趣者,在使用过程中,若出现问题,请把文档发给我,以便完善。
功能介绍:主要有三个
一个化学文档输入器。隐约记得化学金排有过这样的功能。方便在文本框中无格式输入,能方便书写化学式,化学方程式,直链有机物,电子排布式。
二是化学文档转化器。这个功能是把已有的未格式化的PPT文档(如由Word拷过来的)转化成化学格式文档。
三是PPT文档转DOC,这个功能在这个版上有两个人做过,一个是守柔版主,一个是OK999,我借用并修改了版主的作品。
如果关注这个的人较多,那就把Word版的放上来,目前还在测试中。
后记一:
做这个转化器有两个难处:一是没有涉足过足够的化学文档是没有办法取得素材,二是就算有了素材,要建议模型也绝非易事。所以,做做停停,用了近一个月时间,才敢放出来。目前在我手里测试没有问题
后记二:
特别致谢守柔版主。为了方便把PPT文档输出成DOC,里面集成了守柔的PPT2DOC,使我省了不少时间。
不过,周老大的作品中没有对字体大小做更改,是原PPT中大小,针对这一点,我缩小了字体,最小字体为小5号,一般字体大小为PPT中大小 的一半。
另外,周老大的作品中对手绘图形(非自选图形)没有拷入DOC中,而这个正是我需要的,所以做了补充。
后记三:
在学习Powerpoint的VBA的过程中,用到替换功能,想把不规范的化学写法规范化,借鉴微软帮助文件中的源代码,屡试不对,非常烦火,甚至有过中断,因为OFFICE常用组件中,Powerpoint最弱智,后来自己静下心来,一步步高度,才发现示例代码有问题。长叹一口气。实践出真知。
后记四:
我的电脑系统为WINXP+OFFICE2003,因为习惯,所以好用,我没有升级OOFICE。作品是在这个系统下开发的,后面版本为没法测试,我也没有能力和时间为后面版本提供支持,近些年来,我已经不常回家了。我没有做成加载宏,你可以参考里面的代码。

TA的精华主题

TA的得分主题

发表于 2013-1-31 10:19 | 显示全部楼层
不错
我以前就是教化学的。

TA的精华主题

TA的得分主题

发表于 2013-1-31 17:09 | 显示全部楼层
本帖最后由 chuhaiou 于 2013-2-1 09:57 编辑

谢谢分享!
几点建议:
1、化学文档输入器输入到PPT中最好只按Enter,同时按Ctrl+Enter还是不太方便!
2、元素符号最好能自动改写
3、化学式最好能自动添加括号
4、转化学格式最好也适用于组合对象
5、输入化学式最好还是在文本框中直接输入


TA的精华主题

TA的得分主题

 楼主| 发表于 2013-2-1 16:45 | 显示全部楼层
本帖最后由 wenz 于 2013-2-1 16:51 编辑

针对楼上的建议做以下回复:
1、化学文档输入器输入到PPT中最好只按Enter,同时按Ctrl+Enter还是不太方便!
    考虑到在PPT中一个文本框里多行输入,特意设置Enter为换行,Ctrl+Enter为转化,把每行设为一个对象不符合实际使用。
2、元素符号最好能自动改写
    这个功能目前我还不能实际,一般在Word中,用的是自动图文集,穷举的办法,我这里用的是VBA,通过算法判断所有元素符号大小写不太现实,用VBA判断脚标已经很不容易了。所以这个建议目前还没有能力实现。
3、化学式最好能自动添加括号
    这个问题与第2点是连续的,让软件判断化学式什么时候用括号,我的能力还是达不到,化学功力也达不到。
4、转化学格式最好也适用于组合对象
    组合对象之前我没有试过,经过试后,VBA不能对其中有无文字做出判断,如果解组了应当可以,但否定丢失了原来的动画,或许有更好的方法等我学习之后才能解决。因为我之前做PPT都没有在组合图形中添加文字,所以这个问题设计时没想到。
5、输入化学式最好还是在文本框中直接输入
    考虑到输入的准确性,快捷性,建议在输入窗中输入。原因如下:
    准确性:在窗中输入可以过滤到意外的字符,使所用字符更规范,
    快捷性:我在窗中加入了快捷输入↑和↓,以及热化学方程式的状态及△H,这是在普通文本框中无法直接实现的。

TA的精华主题

TA的得分主题

发表于 2013-2-2 15:33 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
化学文档编辑转化,不知好用否!!                          

TA的精华主题

TA的得分主题

发表于 2013-2-3 18:29 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 chuhaiou 于 2013-2-3 18:58 编辑

换行可采用软回车或自动换行!刚刚完成了PPT整点报时和提醒功能。

TA的精华主题

TA的得分主题

发表于 2013-2-3 18:59 | 显示全部楼层
化学式输入这方面《化学快录》做得比较好,网上可找到。

TA的精华主题

TA的得分主题

发表于 2013-2-4 10:17 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 chuhaiou 于 2013-2-4 11:17 编辑


http://sq.k12.com.cn/discuz/blog-1440949-89532.html


TA的精华主题

TA的得分主题

 楼主| 发表于 2013-2-7 20:13 | 显示全部楼层
chuhaiou:
你好,前天下午终于休假了,拜读了你给的链接以及你参与的帖子,感慨万千呀。决定结了此帖。
我在2004年时活跃在这个论坛,之后由于种种原因不能腻在网上,最近发帖大概是在08年吧。……。多年来,不常上来,没有发帖发问,等这回上来,才知自己落后了四年了。
从你的帖子里知道,这期间致力于探讨化学输入的人有你们三个人,而且都有很丰硕的成果,特别是潘小弟,他的造诣之高,让我望尘莫及,于是中止了自己的想法。你也是一位有追求的前行者,不断在电脑和化学领域探索,不愧是化学小神通,在此我向你们表示敬意。
以前,我没有整理自己的资料,所以也没有太关注化学输入的进展,现在记忆力下降,得弄点资料,所以对这个有些关注了。对我而言,一般也就是用VBA提高一下自己的效率,没有更向前发展成DLL或商业模式,所以你看到我的东西都是有源码的,有时间了做一下,没有时间了,就搁了几年,昨天的浏览于我真如一梦方醒。
我这人比较正统,所以在化学输入上,我尊重原汁原味,对小括号的省略和大小写,都保留其故有的本性,看你你的动画,试了化学快录,才知道我的落后与古板,有了你们的执着和成果,我就不必再枉花时间了,采取拿来主义了,我的Word探索也就停止了。
新年在即,祝你和你的家人新年快乐。

TA的精华主题

TA的得分主题

发表于 2013-2-18 11:24 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 chuhaiou 于 2013-2-18 11:34 编辑

If KeyCode = 38 Then TextBox1 = Mid(TextBox1, 1, TextBox1.SelStart) & "↑" & Mid(TextBox1, TextBox1.SelStart + 1, Len(TextBox1))
If KeyCode = 40 Then TextBox1 = Mid(TextBox1, 1, TextBox1.SelStart) & "↓" & Mid(TextBox1, TextBox1.SelStart + 1, Len(TextBox1))
If KeyCode = 39 And TextBox1.SelStart = Len(TextBox1) Then TextBox1 = TextBox1 & "→"
If KeyCode = 37 And TextBox1.SelStart = Len(TextBox1) Then TextBox1 = TextBox1 & "←
LZ能否实现文本中自定义快捷键输入"↑"、 "↓"、"→"、"←"?

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

本版积分规则

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

GMT+8, 2024-5-4 13:58 , Processed in 0.040439 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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