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の形式です。期間を削除すると、これらの手法が成功するため、以下のコメントと応答に投稿された解決策に関して、期間が問題を引き起こしていると思います。