Msdn フォーラムに「Excel2010-VBA 画像「図の書式設定」のリセット」という質問がありました。
リボンの書式タブ → 調整グループ → 図のリセット(スプリットボタン) → 「図のリセット」を実行したい、という質問で、マクロの記録機能ではコードが記録されないようでした。
Excelに限らずOfficeアプリケーションの機能をマクロで実行する方法は色々とありますが、こんなときはCommandBarsオブジェクトの「ExecuteMso」メソッドを使うのが便利です。
Public Sub ResetPicture() '[図のリセット]が有効な場合のみ実行 With Application.CommandBars If .GetEnabledMso("PictureReset") = True Then .ExecuteMso "PictureReset" End With End Sub
ExecuteMsoメソッドは、引数として機能(コントロール)のIDを渡すことで、そのコントロールを実行するメソッドで、上記コードでは「GetEnabledMso」メソッドを使ってコントロールが有効な状態か無効な状態かを判断し、有効な場合のみ処理を実行するようにしています。
コントロールのIDは、下記Webページで紹介しているコントロールIDリストから探しても良いし、
・Office製品のコントロール IDリスト – Curah!
http://curah.microsoft.com/33208/office%E8%A3%BD%E5%93%81%E3%81%AE%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AD%E3%83%BC%E3%83%AB-id%E3%83%AA%E3%82%B9%E3%83%88
下記Webページで紹介しているように、クイック アクセス ツール バーから調べることもできます。
・マクロで実行したいコマンドのIDを調べる簡単な方法
//www.ka-net.org/blog/?p=4438
ちなみに「図とサイズのリセット」の場合は、下記コードのようになります。
Public Sub ResetAndSizePicture() '[図とサイズのリセット]が有効な場合のみ実行 With Application.CommandBars If .GetEnabledMso("PictureResetAndSize") = True Then .ExecuteMso "PictureResetAndSize" End With End Sub
この記事へのコメントはありません。