こんにちは。
こんなスタイルでよいと思いますね。
#1のおっしゃるAPIもありますが、イベントを新たに作らないといけませんね。私は、あまり新しいイベントを設ける方法が好きではないです。他のマクロに影響が出てくるように感じるからです。以下の方法は、ボタンのインスタンスを設ける方法で、本来、クリックイベントだから、全体の負担はありませんね。
ツールバーでクリックだから、基本的にはツールバーのみに、イベントを設ければよいのではないでしょうか?
設定は、保存して再起動か、Auto_Open を実行させます。
'------------------------------------
' 標準モジュール
'------------------------------------
Public myClass(0) As New Class1
'配列にする理由は、ボタンの格納数を増やす可能性があるから
Sub Auto_Open()
Call Class_Setting
End Sub
Private Sub Class_Setting()
With Application
'印刷ボタン
Set myClass(0) = New Class1
Set myClass(0).clsCntl = .CommandBars.FindControl(, 2521)
End With
End Sub
'------------------------------------
'クラスモジュール
'-------------------------------------
Public WithEvents clsCntl As CommandBarButton
Private Sub clsCntl_Click(ByVal Ctrl As Office.CommandBarButton, CancelDefault As Boolean)
Dim lPage As Long
If Ctrl.ID = 2521 Then
CancelDefault = True
With ActiveSheet
lPage = Application.ExecuteExcel4Macro("GET.DOCUMENT(50)")
ActiveSheet.PrintOut Preview:=False 'Trueはプレビューオン
MsgBox "印刷は:" & lPage & "枚でした。"
End With
End If
End Sub
お礼
詳しい説明をありがとうございます!! できました!! 感動しています!! こんなぺーぺーの初心者におつきあいくださり、ありがとうございましたm(_ _)m