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

时间:2014-04-30 21:57:58

标签: c# powerpoint office-interop powerpoint-vba

我试图通过Interop自动化在Powerpoint的TextFrame中编辑文本的基本过程,而且我遇到了麻烦。我需要能够在屏幕上的特定位置开始文本编辑过程,并且在爬行MSDN之后我仍然不知道如何做到这一点。用例归结为:

  1. 我的服务收到X和Y坐标
  2. 我告诉Powerpoint选择该位置的形状
  3. 我告诉Powerpoint将闪烁的光标放在用户自己点击开始编辑文本的位置。
  4. 这是绊倒我的第三步。 Word具有RangeFromPoint,它返回文本范围。但是,在Powerpoint中,该方法返回一个形状。我可以使用TextRange.Characters()将光标手动放置在形状的文本范围内,但是它接受字符索引值而不是屏幕坐标。

    任何人都知道如何解决这个问题(除了通过Win32调用强制鼠标消息)?

1 个答案:

答案 0 :(得分:2)

每个文本,直到字符级别,都可以视为范围;每个文本范围都有.BoundLeft,.BoundTop,.BoundHeight和.BoundWidth属性,它们返回限定文本范围的矩形的坐标。

例如,此代码段将为您提供当前所选形状中第三个文字字符的左侧坐标:

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

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