添加一个指定了宏的命令按钮

时间:2015-10-23 23:00:07

标签: vba ms-word word-vba

在ms中Word如何使用VBA添加CommandButton并为其指定一个宏(仍在使用VBA)?

我有代码添加命令按钮。每次运行第一个宏时,如何在不添加私有子的情况下自动添加宏?

Sub CompareCase()

Dim testname As String
Dim test1, test2, test3

test1 = ""
test2 = ""
test3 = ""

testname = LCase(InputBox("Enter name of test.")

Call SelectAndProcess

Select Case testname

Case "string1"
    ActiveDocument.compare Name:=test1, DetectFormatChanges:=False, CompareTarget:=wdCompareTargetOriginal

Case "string2"
    ActiveDocument.compare Name:=test2, DetectFormatChanges:=False, CompareTarget:=wdCompareTargetOriginal

Case "string3"
    ActiveDocument.compare Name:=test3, DetectFormatChanges:=False, CompareTarget:=wdCompareTargetOriginal

Case Else
    MsgBox "Test not found"

End Select

Call Macro_Add_Button

End Sub

我想在创建时为CommandButton指定一个宏。

Sub Macro_Add_Button()

Dim oCtl
Dim oCmd

ActiveDocument.Content.InsertParagraphAfter

Set oCtl = ActiveDocument.InlineShapes.AddOLEControl(ClassType:="Forms.CommandButton.1", Range:=ActiveDocument.Paragraphs.Last.Range)

Set oCmd = oCtl.OLEFormat.Object

oCmd.Caption = "Score"

End Sub

1 个答案:

答案 0 :(得分:0)

您的想法存在的问题是文档表面上的MSForms控件被视为属于该文档的对象。因此,它链接到的代码必须位于ThisDocument模块中,其名称必须是控件的名称,后跟下划线并单击:CommandButton1_Click。

如果您需要更多灵活性,请考虑使用MacroButton字段。您可以将看起来像按钮的(内联)图形指定为“显示文本”。并且您的代码可以将ButtonFieldClicks属性(Application.Options.ButtonFieldClicks)更改为一(1),以便它在单个而不是默认的双击上触发。可以将MacroButton字段分配给任何“Public Sub”过程。