0

Wbk1シートにActiveXボタンがあるワークブックがあります。別のブックからボタンに関連付けられたサブを実行したいWbk2。Subのコードをにコピーするのは実用的ではありません。これは、SubがWbk2から一連の関数を呼び出すためWbk1です。私は次のことを試しました:

Sub pushButton()

Dim obj As OLEObject
Dim btn As MSForms.CommandButton

For Each obj In Wkb1.Sheets("testSheet").OLEObjects
  If TypeOf obj.Object Is MSForms.CommandButton Then
    set btn=obj.Object
    debug.print btn.Caption 'used to test whether or not For loop is picking up button
    obj.Activate
    SendKeys " "
  End If
Next

End Sub

それはエレガントでないSendKeys()ハックであるだけでなく、機能しません。ボタンはフォーカスされますが、押されません。ボタンのキャプションを取得できるため、ForループがCommandButtonを含むオブジェクトを正しく反復していることがわかります。からこのボタンをクリックする(そしてそれによってそのプライベートサブを実行する)にはどうすればよいWbk2ですか?

編集:問題の実際のファイル名は123A_1.0-2.0.xlsmの形式です。期間を削除すると、これらの手法が成功するため、以下のコメントと応答に投稿された解決策に関して、期間が問題を引き起こしていると思います。

4

1 に答える 1

1

ちょうどどうですか

Application.Run (wb1.Name & "!MacroName")
于 2012-10-31T00:26:03.193 に答える