ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 根据选中单词坐标定位窗体显示位置(不知能否实现)

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-5-10 12:30 | 显示全部楼层 |阅读模式
根据选中的单词坐标定位窗体显示位置

***这段时间开发一个插件,遇到了很棘手的问题,由于能力有限,请高手踢脚。感谢万分。

总体要求:

1. 窗体根据被选中单词坐标,只能显示在正文边框内,不得超出正文边框外,即如11图所示蓝色边框内。

2. 当页面参数被改变时(页边距,页面方向,纸张大小,页面缩放等等),也不得影响窗体显示位置。

3. 根据选中单词对屏幕的坐标决定窗体显示在被选中单词左边还是右边,上边还是下边。
4.如果根据选中单词定位窗体,不超出正文边框,就以选中单词右边作为标准,窗体显示在选中单词下方,于选中单词右边对齐。
5.对于选中单词和窗体之间的距离,无论是哪一种情况都是一定的,无加以要求。
11.png
1.png
2.png
3.png
4.png





TA的精华主题

TA的得分主题

发表于 2020-5-10 23:17 | 显示全部楼层
可以查看GetPoint和RangeFromPoint方法

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-5-11 09:49 | 显示全部楼层
sylun 发表于 2020-5-10 23:17
可以查看GetPoint和RangeFromPoint方法

谢谢兄弟的关注和指点。
按照你的指点,我查阅了相关内容并凑合了一下代码,但效果不太理想,请兄弟看一下。
  1. Public Sub getpix()
  2. Const Annotation = " [If value is negative, the selection is invisible]"
  3. Dim o As Object
  4. Set o = GetObject(, "Word.Application")
  5. Dim pHgt As Long, pWid As Long, pTop As Long, pL As Long, kb723 As Long
  6. o.ActiveWindow.GetPoint pL, pTop, pWid, pHgt, Selection.Range  'read the left,top,width,height of the selection
  7. kb723 = o.ActiveWindow.UsableHeight - o.ActiveWindow.Height + pTop
  8. MsgBox pTop & vbCrLf _
  9.        & o.ActiveWindow.Height & vbCrLf _
  10.        & o.ActiveWindow.UsableHeight & vbCrLf _
  11.        & kb723 & Annotation & vbCrLf _
  12.        & pWid

  13. End Sub
复制代码

上述插图中,对第一种情况和第三种情况的效果不理想。请兄弟完善一下,谢谢。

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-5-15 10:48 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-5-17 19:04 | 显示全部楼层
sylun 发表于 2020-5-10 23:17
可以查看GetPoint和RangeFromPoint方法

请问能不能留一下联系方式?请你赐教,谢谢。

TA的精华主题

TA的得分主题

发表于 2020-5-17 19:59 | 显示全部楼层
楼主可以getpoint为关键词搜索一下本版的帖子。getpoint获得的数据只是屏幕位置参数,其长与宽可用,且是以像素为单位,用时需转换为磅值。左上角坐标位置可用selection对象的information属性中的两对位置参数,是相对于文档的(wdHorizontalPositionRelativeToPage与wdHorizontalPositionRelativeToTextBoundary,wdVerticalPositionRelativeToPage与wdVerticalPositionRelativeToTextBoundary)
至于窗体的位置是否能自适应,没有研究

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-5-18 10:49 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 666611430 于 2020-5-20 09:45 编辑
sylun 发表于 2020-5-17 19:59
楼主可以getpoint为关键词搜索一下本版的帖子。getpoint获得的数据只是屏幕位置参数,其长与宽可用,且是以 ...

谢谢兄弟的关注和指点。通过兄弟的指点本帖的问题以基本解决了,精确定位有点麻烦,我自己看资料再完善完善。
------------------------------
非常感谢兄弟上次帖子中的帮忙,非常有帮助了。
http://club.excelhome.net/thread-1534814-1-2.html
-----------------------------
***现在又想让我要把效果修改成如图所示
1.png
***正文最后显示效果***
1.单词的选择方式与上次帖子中的选择方式一样。
2.加序号
3.若有重复单词,只保留一个。
4.加对单词拆分,效果如上图所示。
5.如图红线所示距离以一个TAB隔开
-----------------------------------------------------------
***希望兄弟再一次帮我一个忙。如果兄弟觉得可以留个联系方式,兄弟帮了我大忙,有一点心意给兄弟表示表示。谢谢。

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-5-20 13:43 | 显示全部楼层
7楼的要求对我工作的完成非常需要,由于自己水平有限,怎么调试也调试不出来。请@Sylun老师和其他能手们帮我小白解决一下。期待。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-24 08:57 , Processed in 0.048147 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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