为了避免XY problem,这就是我想要完成的事情:当选择了一个形状时,我希望有关该形状的详细文字显示在屏幕上。
我首先尝试使用Shape Data,但它仅支持单行name = value对。我的详细信息是一个任意的多行文字blob。
我的下一个想法是使用形状的ScreenTip(也就是工具提示)来保存文本数据,然后编写一些VBA代码来处理_SelectionChanged事件。当选择一个形状时,我想将它的屏幕提示文本复制到另一个对象的文本中(我的详细信息面板)。
我得到_SelectionChange事件处理工作,但是在调试器中调用Selection对象时,我找不到公开ScreenTip信息的所选对象的任何属性。
Visio的编程API太缺乏支持他的那种东西吗?还有其他方法可以做到这一点吗?是否有其他工具可能更好(最好免费)?
答案 0 :(得分:3)
Visio的API能够轻松地执行此操作。
您似乎并不了解Visio的形状表,这是存储屏幕提示文字的地方,以及您想要了解的任何形状的任何内容。
要访问屏幕提示文字,您只需从所选形状的形状表中读取评论单元格:
Application.Selection(1).CellsU("Comment").ResultStr(visNone)
此代码将返回评论文本。
您使用SelectionChange事件进入了正确的轨道,但当然您要检查选择计数= 1,或者至少> 0。