是否可以使用Interop按位置(顶部和左侧偏移)选择Powerpoint TextFrame中的文本

本文关键字:选择 Powerpoint TextFrame 文本 Interop 可以使 位置 顶部 是否 | 更新日期: 2023-09-27 18:00:56

我正试图通过Interop自动化Powerpoint中TextFrame中编辑文本的基本过程,但遇到了一个障碍。我需要能够在屏幕上的特定位置开始文本编辑过程,在抓取MSDN后,我仍然不知道如何做到这一点

  1. 我的服务接收X和Y坐标
  2. 我告诉Powerpoint选择该位置的形状
  3. 我告诉Powerpoint将闪烁的光标放在用户自己点击开始编辑文本的位置

这是我绊倒的第三步。Word具有RangeFromPoint,它返回一个文本范围。不过,在Powerpoint中,该方法会返回一个形状。我可以使用TextRange.Characters((将光标手动放置在形状的文本范围内,但它接受字符索引值而不是屏幕坐标。

有人知道如何做到这一点(除了通过Win32调用在鼠标消息中强行执行(吗?

是否可以使用Interop按位置(顶部和左侧偏移)选择Powerpoint TextFrame中的文本

每一位文本,一直到字符级别,都可以被视为一个Range;每个文本区域都具有.BoundLeft、.BoundTop、.BoundHeight和.BoundWidth属性,这些属性返回界定文本区域的矩形的坐标。

例如,这个片段将为您提供当前所选形状中第三个文本字符的左坐标:

With ActiveWindow.Selection.ShapeRange(1)
   Debug.Print .TextFrame.TextRange.Characters(3, 1).BoundLeft
End With

坐标以点为单位返回。听起来你已经掌握了将屏幕坐标转换为PPT坐标的方法。