Excel VBA 新規ブックを作成しマクロが登録されたボタンを設置する方法 | OnAction
仕事でVBAを使うことがあり、やりたいことはネットで調べていますが、VBA初心者の私が分かりづらかったものを、初心者でも分かるように説明したいと思います。
効率的なコードが書けていない可能性もありますので、予めご了承ください。
今回はOnActionを使用し、新規ブックを作成しマクロが登録されたボタンを設置する方法を紹介します。
使用ケース
①"ブックを作成する"マクロが登録されたボタンクリックすると、新規ブックが作成される。
(本来、この元ブックに大量のデータがあり、その中から何らかの条件でデータを抽出したりしますが、その点は割愛します。)
②"ブックを閉じる"マクロが登録されたボタンが自動的に生成され、クリックするとブックが閉じる。
②のブックは固定ファイルにして、事前にマクロを組み込んでおく方法もありますが、今回は新規ブックを作成し、そのブックにマクロを組み込む方法を紹介したいと思います。
サンプルコード
Option Explicit
Sub wbclose()
ActiveWorkbook.Close savechanges:=False
End Sub
Sub ブック作成()
Dim wb As Workbook
Dim shp As Shape
Set wb = Workbooks.Add
Set shp = ActiveSheet.Shapes.AddShape(msoShapeRectangle, 100, 10, 70, 25)
shp.Select
Selection.Characters.Text = "閉じる"
Selection.OnAction = ThisWorkbook.Name & "!wbclose"
With shp.TextFrame
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
End With
Range("A1").Select
End Sub
コード解説
Option Explicit
Sub wbclose()
ActiveWorkbook.Close savechanges:=False
End Sub
閉じるボタンに登録するマクロを、大元のマクロとは別のプロシージャで記載します。
アクティブなブックを、保存せずに閉じるコードです。
Set wb = Workbooks.Add
データの抽出先として新規ブックを生成します。
今回は意味のないものになっていますが、通常は変数にセットしておいた方が色々便利でしょう。
Set shp = ActiveSheet.Shapes.AddShape(msoShapeRectangle, 100, 10, 70, 25)
図形の挿入はShapeオブジェクトのAddShapeメソッドで行います。
Shapes.AddShape(Type, Left, Top, Width, Height)
- Type:作成するオートシェイプの種類をMsoShapeTypeで指定します。
msoShapeRectangleは四角形になります。MsoShapeTypeはたくさんの種類があり、他サイトでも多く紹介されていいますので割愛します。 - Left:オートシェイプの左端位置を指定します。
- Top:オートシェイプの上端位置を指定します。
- Width:オートシェイプの幅を指定します。
- Height:オートシェイプの高さを指定します。
サンプルコードは四角形を左から100ポイント、上から10ポイント、幅70ポイント・高さ25ポイントで挿入というコードとなります。
shp.Select
Selection.Characters.Text = "閉じる"
Selection.OnAction = ThisWorkbook.Name & "!wbclose"
図形に「閉じる」のテキストを入力してから、別プロシージャで登録した"ブックを閉じる"マクロを登録しています。
当初は「With shp・・・」で書いたのですがエラーとなってしまいました。
With shp.TextFrame
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
End With
図形のテキスト操作は、TextFrameで行います。
HorizontalAlignmentが水平方向、VerticalAlignmentが垂直方向の表示位置となり、xlCenterで中央揃えにしています。
以上、新規ブックを作成しマクロが登録されたボタンを設置する方法でした。
データの抽出先を新規ブックにすること自体がそこまで多くはないと思いますが、知っておいて損はない応用編マクロではないでしょうか!
ユーザーフォームを使用した入力フォームの作り方
週ごとに縦に並んだ表を横並びにする方法 | Find&Set
セルに入力された日付を取得し自動でシートとファイルを作る方法
検索窓にキーワードを入力しEnterキーで検索するフォームの作り方 | Intersect
ブックを開いた時のウィンドウサイズを指定する方法 | workbook_open
新規ブックを作成しマクロが登録されたボタンを設置する方法 | OnAction
複数のワークシートをまとめて表示・非表示にする方法 | Visible Not.Visible
セル位置が変わっても特定の範囲を選択する方法 | Find&Address
電話番号からハイフンを削除し0から表示させる方法 | Evaluate&Replace
ダイアログボックスからファイルを選択して開く | GetOpenFilename