ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] word如何提取键盘信息?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-1-4 22:23 | 显示全部楼层 |阅读模式
在word中 想监控 键值F9 ,当按 F9后  在word 更新域的同时 执行 vba程序,用vba该如何表达呢?。

TA的精华主题

TA的得分主题

发表于 2018-1-5 06:07 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Private Sub UpdateFields()
''''修改Word命令
    MsgBox "您即将更新域.", vbInformation
    Selection.Fields.Update
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-1-5 09:05 | 显示全部楼层
我的想法是想 监测 “F9”,不是用程序语言 替代F9更新。 一旦 敲击 F9,就执行 自己设定的程序。

TA的精华主题

TA的得分主题

发表于 2018-1-5 09:33 | 显示全部楼层
wuyang163 发表于 2018-1-5 09:05
我的想法是想 监测 “F9”,不是用程序语言 替代F9更新。 一旦 敲击 F9,就执行 自己设定的程序。

我想楼主可以测试一下便知.
如果不清楚,至少可以搜索一下本版"修改Word命令".
...

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-1-5 11:45 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
感谢大神,居然还有这种命令!达到目的了!

TA的精华主题

TA的得分主题

发表于 2018-1-5 18:08 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
守柔 发表于 2018-1-5 06:07
Private Sub UpdateFields()
''''修改Word命令
    MsgBox "您即将更新域.", vbInformation

难得有机会向守柔顾问请教,若这样更改了UpdateFields命令后,在已生成的自动目录域中按F9却不再弹出“更新目录”的对话框了,请问这问题如何解决,才能让这对话框恢复显示呢?
123.JPG

TA的精华主题

TA的得分主题

发表于 2018-1-7 16:15 | 显示全部楼层
dafanshu1 发表于 2018-1-5 18:08
难得有机会向守柔顾问请教,若这样更改了UpdateFields命令后,在已生成的自动目录域中按F9却不再弹出“更 ...

dafanshu1:
您的这个问题,貌似一种悖论。既然决定修改WORD命令以重新安排代码替代内置过程(命令)的执行,又希望回到Word命令中去。许是我久未玩WORD了,WORD VBA本身对此做了规避了,它将不再执行相同的内置命令失操作了。
比如:
Private Sub UpdateFields()
''''修改Word命令
    MsgBox "您即将更新域.", vbInformation
    '''    Selection.Fields.Update
    Application.Dialogs(wdDialogUpdateTOC).Show
End Sub
好像 IF .Show=-1 Then .Execute 即可执行对话框中的设置,实测并未发生更改,这有点类似Excel的循环引用了。
实际开发环境中,我也从未遇到过类似的需求。要么通过VBA 过程(非修改WORD命令)来调用WORD内置对话框或者WordBasic命令,要么修改WORD命令,通过VBA代码完成操作。
针对您这样的问题,则只能创建一个窗体,这个窗体等于同“更新目录”,然后根据响应结果,更新特定信息(这个录个宏应该可以知道)。
不知我这样的答复,您是否认同?

TA的精华主题

TA的得分主题

发表于 2018-1-8 14:28 | 显示全部楼层
守柔 发表于 2018-1-7 16:15
dafanshu1:
您的这个问题,貌似一种悖论。既然决定修改WORD命令以重新安排代码替代内置过程(命令)的执 ...

    可以与守柔顾问交流感到非常荣幸!
    其实楼主的这一问题小弟在几年前就遇到了,一直困扰着。
    因为我的工作中经常要在word表格中调试数据,用到域的计算公式,但每次更改数据后要全选整个表格再按F9才能刷新,这太麻烦了,于是我就想扩展F9的功能,即在F9原有功能的基础上,再添一个功能:当光标在表格中(wdWithInTable)时整个表格的域都自动更新。
    一开始我却不懂得像守柔顾问那样做,只是另建一个宏,在Selection.Fields.Update基础上添加其他语句,然后给宏予以F9快捷键,此宏用在其它域中一切正常的,但后来发现在TOC目录域时不再弹出“更新目录”对话框了,那当需要只更新页码时怎么办呢?虽然实际工作中很少用到只更新页码的,但总觉得不够完美。
    我也曾试过用Dialogs(wdDialogUpdateTOC).Show的,但不起作用,而且还需要判断该域是否是TOC域才弹出对话框,太麻烦了。后来干脆用Application.Run "UpdateFields",居然也不弹出对话框。最后才偶然间醒起,当我需要只更新页码时,直接在目录域中按右键的“更新域”不就行了吗?!这才算是放下这问题。
    我之所以提出这一问题,一来是想知道有没有只通过宏来解决的方法,二来想知道为什么word内部命令在宏中使用与直接在word界面中使用的效果有时会有点不同,看看守柔顾问对此有什么看法。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-12 09:58 , Processed in 0.022543 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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