【问题标题】:MS-Word VBA reference identificationMS-Word VBA 参考标识
【发布时间】:2014-04-26 02:21:07
【问题描述】:

我在 Microsoft Word 中有一个来自第三方的自定义内容控件,我正在尝试调整其宽度和高度。通过 VBA 进行的正常内容控件选择不起作用,因为此控件没有标题或标签。但是,如果我手动选择对象并使用“Selection.ShapeRange.Height = x”或 ShapeRange.Width 以编程方式调整它的大小,它确实有效。因此,要以编程方式完成所有操作,我需要确定“选择”的名称,而无需手动选择它。

有没有办法在 word 中“检查”对当前选定对象的完整引用,以便我们可以在 VBA 中找到使用它的起点?

【问题讨论】:

    标签: vba ms-word


    【解决方案1】:

    很难知道您处理的是哪种类型的对象。我通过插入一个空白的 ActiveX 图像控件、选择它然后运行宏来对此进行测试。代码有两种方法,但一种被注释掉了。

    Sub FindName()
        MsgBox (Selection.Fields.Item(1).OLEFormat.ClassType)
    
        'MsgBox (Selection.InlineShapes.Item(1).OLEFormat.ClassType)
    
        MsgBox (Selection.InlineShapes.Item(1).Field.Index)
        MsgBox (Selection.InlineShapes.Item(1).AlternativeText)
    
        'Show current name
        MsgBox (Selection.Fields.Item(1).OLEFormat.Object.Name)
    
        'Set new name
        Selection.Fields.Item(1).OLEFormat.Object.Name = "Image5"
    
        'Re-display name to show that it changed
        MsgBox (Selection.Fields.Item(1).OLEFormat.Object.Name)
    End Sub
    

    结果是这样的:

    【讨论】:

    • 我收到错误“找不到方法或数据成员”(将此添加到宏按钮,选择内容控件,单击按钮)
    • 你能多解释一下第三方控制吗?是怎么安装的,是不是表格等等……
    • 我相信它实际上只是一个普通的 ActiveX 图像内容控件,运行自定义宏来创建它。
    • 我想我找到了。试试最后一行MsgBox (Selection.Fields.Item(1).OLEFormat.Object.Name)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-17
    • 1970-01-01
    相关资源
    最近更新 更多