ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[原创]Word2003命令要览

[复制链接]

TA的精华主题

TA的得分主题

发表于 2006-6-6 12:35 | 显示全部楼层 |阅读模式
经过“海量”整理校对,小弟终于赶在Word2007“山雨欲来”前夕整理出《Word2003命令要览》,今天恰逢2006.06.06,真是“顺利”,呵呵!   小弟目前正在试用Word2007,里头的种种新功能,让人不能不感叹Word真的“更新换代”了,强大的智能菜单、即时预览编辑效果等等功能,让人激动难已。然而,“自定义工具栏”的难觅踪影,却也让习惯于DIY Word2003的人们无所适从。Word2007的“ListCommands”命令所列出来的“命令名”,都已经较Word2003大为简略,要想从命令名中直接窥得Word2007奥妙,已经相当困难。大家要想真正DIY Word2007,怕是先要好好熟悉Word2003的各种命令才可。那么,小弟今天整理完成的《要览》,或许可以为大家提供一点帮助!不胜荣幸!   自来EH的Word论坛,不足一月,收获却已抵过去“游击”数年!这个“家”里,守柔、Konggs两位版主坦荡立身、热心传艺,堪称佳话!小弟歆羨不已!还请“二老”(呵呵)多多指点无知小弟!   也请大家在看了《要览》之后,提出批评意见,小弟定当全部收下!谢谢!   小弟还打算进行快捷键的整理,整理结果将另帖发布,敬请留意! acJkBX0I.rar (870.34 KB, 下载次数: 2364)
[此贴子已经被konggs于2006-6-6 13:16:50编辑过]

GpkIia4P.rar

976.56 KB, 下载次数: 2938

[原创]Word2003命令要览

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2006-6-6 14:23 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2006-6-6 14:24 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2006-6-6 15:12 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2006-6-6 16:22 | 显示全部楼层

TA的精华主题

TA的得分主题

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

我决定为此贴加上精华,楼主付出了很大的心血,并且在对VBA还不太了解的情况下,手动做成的,其精神可嘉,其义深远。

在楼主发送于守柔的短消息中,我深深被这份追求所感动。我把我能实现的想法说一下,供楼主参考,注意,这只是个半成品,不能算是自动的,很遣憾,我目前也无法成功自动取得对所有命令的中文说明,尤其是WORD2003及其以后版本。其中,我尽管对英文版进行了测试调用对话框中各参数的操作,也未能如愿以偿。以下代码运行之间请注意:

运行LISTCOMMANDS命令,将所有命令打印文档表格中,表格转换为文字,将命令中的所有空格替换掉。

以下一段小程序,是遍历段落中,提取段落中的WORD命令所在位置,然后调用自定义键盘对话框,注意,请核对自定义对话框中的命令是否与所在段落命令一致,如果不一定,需手动选择(这种情况很多),如果首次出现对话框时不是“所有命令”类,请手动选择该类,以后会自动记忆为该类。

出现并确认命令一致后,按下ALT+PRINTSCREENSYSRQ组合键,截屏。单击关闭命令,关闭对话框,全手动。

关闭后,WORD将自动粘贴该对话框,手动录入中文说明。

第二次运行该代码(请自定义该命令到快捷键或工具栏),自动删除第一次的图片。重复上述操作。

如果不能正确运行,请修改"ME"关键字为“Activedocument”或“Thisdocument”。

Sub Example()
Dim myDialog As Dialog, i As Paragraph, p As Long
Dim myRange As Range
'取得自定义对话框图像(临时解决命令的中文说明)
On Error Resume Next '忽略错误
Me.InlineShapes(1).Delete '删除嵌入式图片
Set myDialog = Word.Dialogs(wdDialogToolsCustomizeKeyboard) '定义一个自定义键盘对话框对象
For Each i In Me.Paragraphs '在当前文档段落中循环
Set myRange = i.Range '定义一个RANGE对象
p = VBA.InStr(myRange, vbTab) '取得制表位位置
myRange.SetRange myRange.Start + p, myRange.End - 1 '重新定义一个RANGE对象
If VBA.InStr(myRange, "△") = 0 Then '如果该RANGE对象中没有"△"标记,说明没有"中文说明"
If myRange Like "[a-zA-Z]*" Then '前面是命令,已去除空格
VBA.SendKeys "{TAB}", False '发送TAB键
VBA.SendKeys myRange.Text, False '向对话框发送命令名称,不一定正确,很多情况会不正确,可能是因为发送字符太多太快
If myDialog.Show = 0 Then '此时需要手动按下"ALT+PRINTSCREENSYSRQ"组合键,即手动截屏,然后手动关闭该自定义对话框
myRange.InsertAfter "△" '插入标志
myRange.SetRange myRange.End, myRange.End
myRange.Paste '粘贴截屏对话框
myRange.SetRange myRange.End, myRange.End
myRange.Select '设置为光标位置,此时手动键入中文说明(来自图中),下一次运行此代码时,自动此删除图片
Exit Sub
End If
End If
End If
Next
End Sub

TA的精华主题

TA的得分主题

发表于 2006-6-9 06:43 | 显示全部楼层

关于楼主的ID的疑问,我按照自己的理解:

ID是Word内置命令的索引号,是唯一标识。一个WORD命令(ID)可以在很多工具栏中出现,你可以使用Word.CommandBars.FindControls或者Word.CommandBars.FindControl方法进行。

一个ID(或者WORD命令),可以作用于多种场合,根据所选内容的不同,返回不同的结果。正如楼主所提的粘贴命令,它会根据所处环境的不同(粘贴命令所在的工具栏),复制对象的不同,得到不同的结果,而这些所有可能得到的结果,实际上都是这个命令中的代码起的作用。就象SELECT CASE语句一样。

等我有时间,我们再好好探讨一下吧。

TA的精华主题

TA的得分主题

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

金鞭骤临 小弟愧于蹇足

小弟何能,竟先后得孔兄赏“金币”、老大加“精华”!   前头已经得到“二老”极多的关怀照顾与支持,现在又“恩宠有加”,小弟愧极!同时,亦窃窃暗喜:能得“二老”及众兄弟首肯,小弟的汗水,或许还真能给大家带来一点小小的助益!小弟当在此后的学习路上好好用心,享受兄弟们带来的神山仙果的同时,亦不敢把自己的“丑陋的小土豆”藏为“私房”!   老大“半自动宏”果然奇妙!细细加了注释,更是体贴小弟!算是又让小弟“开眼”了!老大总能有别样的思路!小弟佩极!   老大的命令对于单台电脑的操作,自然是绝对的“OK”的。   只是小弟忘了告诉老大,小弟在整理《要览》时是两台电脑协同工作的,一台处于自定义键盘状态,一台则是在ListCommands所有命令列表中编辑,这样倒也不影响手工的文字录入速度,甚至有些地方还较老大“半自动宏”的效率要高一些,虽然电量耗费大了些。   归结一点,这样的整理,瓶颈仍然是“自动取得中文说明”问题。这样的难题,关联到“域”的中文说明、Excel“函数”的中文说明等等Office套件里各种各样的“中文说明库”。小弟的猜想,大概这些“中文说明库”已经被微软“绝对编译”,无法再通过任何方式“自动取得”了。那么,是否可以直接向微软总部求得这些“中文说明”原始数据库?   毕竟,想要学习Office套件,有这些含中文说明的《命令全集》《域全集》《函数全集》,自然要顺手许多。不然,若是手上只有一台电脑,要把这些东西全部整理出来,就是用上老大神妙的“半自动宏”,也仍然所耗甚大,有这雄心而难有时间与体力。当然,这样的问题,小弟觉得是在难为各位MVP了!究竟是一行软件有一行软件的规矩,小弟毛头小伙,信口雌黄,还请老大见谅!   老大所言ID问题,解去小弟心中不少谜团,小弟现在的理解是:老大Word命令ID总结题中的结果,不管在出现在几个区域中,凡是ID相同的,都属于同一个命令——这个命令的“代码”十分丰富,有些像“变色龙”,走到哪山便唱哪山戏,如“剪切”命令,在绘图里就“剪切图形”,在文字里则“剪切文字”。   这样的情况,在小弟整理的《要览》中,大概也有一些类似体现吧(开头的编码为A列编码)。 ①类别、图标、中文命令名、Alt字母快捷键、中文说明一样,英文命令名不一样: 348.格式50 编号(&N) Format Multilevel Default   根据当前默认值创建编号列表 349.格式51 编号(&N) Format Number Default    根据当前默认值创建编号列表 356.格式56 编号(&N) Format Simple Number Default 根据当前默认值创建编号列表 ②类别、图标、Alt字母快捷键、英文命令名、说明不一样,中文命令名一样: 176.绘图9 衬于文字下方(&H) Draw Toggle Layer    Switches whether the drawing object  appears in the front of or behind the text 327.绘图14 衬于文字下方(&D) Format Drawing Object Wrap Behind   将所选图形对象更改为在文字下方无环绕      在老大的总结题整理结果中,以下内容大概可以说明一点问题(行首为区域编码及名称): 23. WordArt      23.6 文字环绕(&T)  ID:=1404 26. Picture       26.11 文字环绕(&T) ID:=1404 27. Drawing Canvas   27.4 文字环绕(&T)  ID:=1404 28. Organization Chart  28.5 文字环绕(&T)  ID:=1404 29. Diagram      29.8 文字环绕(&T)  ID:=1404   在老大的整理结果中,以下ID、图标等信息相同的命令,小弟以为它们各自的中文说明或英文说明(如果有)是不一样的: 1. Standard         1.6打印(&P)   ID:=2521 16. Print Preview       16.1打印(&P)  ID:=2521 17. Word for Macintosh 5.0  17.19打印(&P)   ID:=2521 18. Read Mail        18.4打印(&P)   ID:=2521 19. Send Mail        19.6打印(&P)   ID:=2521 35. Outlook Read Mail    35.4打印(&P)   ID:=2521 36. Outlook Send Mail    36.3打印(&P)   ID:=2521   对小弟而言,《Word命令全集》问题是一个很复杂的问题,当然还包括提取图标时保证其鲜艳度的问题。甚至,还包括,“选择性粘贴”对话框里的选项是“选择性粘贴”命令的一个个代码呢,还是分别对应一个命令?   要完成《Word命令全集》,把各种信息完美无差错整合在一个表格里,小弟现在的估计相当悲观——怕是没有这样的可能了。尤其是面对“命令大门紧闭”的Word2007,小弟要把“自定义→键盘→所有命令”(内场)与“自定义→所有命令”(外场)对上号,已几无可能,其他信息的整合,更是不可想象。   拉拉杂杂许多,还是未把问题梳理表述清楚,请老大原谅!   烦动老大处,小弟深感不安,尤其现在老大正忙得不可开交,还抽出了这许多功夫来指导小弟、鞭策小弟,实让小弟恨难相报!   此问题,仍请老大在办完要紧事后再作处理,现在切莫为小弟的“空想”过于耗费精神!

TA的精华主题

TA的得分主题

发表于 2006-6-13 07:19 | 显示全部楼层

在6楼基础上进一步修改的程序,其使自动化程度更高,但部分命令在当前状态下不可运行时,仍需手动获取中文说明。

以下代码供参考:

Sub Example()
Dim myDialog As Dialog, i As Paragraph, p As Long
Dim myRange As Range
'运行代码前请选手动设置“宏”对话框中的“宏的位置”为“Word命令”
On Error Resume Next '忽略错误
' 不能禁用屏幕更新
Me.InlineShapes(1).Delete '删除嵌入式图片
For Each i In Me.Paragraphs '在当前文档段落中循环
Set myRange = i.Range '定义一个RANGE对象
p = VBA.InStr(myRange, vbTab) '取得制表位位置
myRange.SetRange myRange.Start + p, myRange.End - 1 '重新定义一个RANGE对象
If myRange Like "[a-zA-Z]*" Then '前面是命令,已去除空格
Set myDialog = Word.Dialogs(wdDialogToolsMacro)
With myDialog
Application.StatusBar = myRange.Text '状态栏提示
.Name = myRange.Text '命令名
SendKeys "{Enter}", False '预置运行命令
.Display
myRange.InsertAfter vbTab & .Description
End With
End If
Next
End Sub

命令和代码见附件: mCbSYeCe.rar (19.97 KB, 下载次数: 243)
[此贴子已经被作者于2006-6-13 7:20:17编辑过]

TA的精华主题

TA的得分主题

发表于 2006-6-13 09:02 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-4-27 21:48 , Processed in 0.051912 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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