一瞬でタスク完了!驚きの業務メニュー誕生!
マクロの概要
業務アプリのメニューなので、[業務日報][顧客名簿][売上管理表]など、色々なブックを開くことができるようにします。
ExcelではBookにマクロが保存されるので、マクロを修正するたびにBookを差し替えたりすることがないように、マクロとBookを分けて作成します。
ファイル構成
・スタートメニュー.xlsm(業務アプリをスタートするファイル)
・アプリ_Macro.xlam(実行用マクロファイル)
・アプリ_PGv100.xlam(開発用コードファイル)
上記のサンプルファイルは、OneDrive(Excel業務アプリ大学)からダウンロードすることができます。
マクロの解説
[スタートメニュー.xlsx]を実行すると下図の画面が表示されます。
プログラムは、下記のように手続きしています。
1. [スタートメニュー.xlsx]を開く
2. [Workbook_Open]イベントから[Start]モジュールを実行する
[Start]モジュールの手続き
3. [アプリ_Macro.xlam]を開く
4. [アプリ_Macro.xlam]ファイルの[MainMenu]モジュールを実行する
Bookを開く部分のマクロ(VBA)コードは、下記のようになっています。
[Book1.xlsx]や[Book2.xlsx]を業務ファイル名に書き換えて使用してください。
'---------------------------------------------------------------------
'[Book1を開く]を押したとき
Private Sub CommandButton1_Click()
Call s_BookOpen("Book1.xlsx")
End Sub
'---------------------------------------------------------------------
'[Book2を開く]を押したとき
Private Sub CommandButton2_Click()
Call s_BookOpen("Book2.xlsx")
End Sub
'---------------------------------------------------------------------
'[Book3を開く]を押したとき
Private Sub CommandButton3_Click()
Call s_BookOpen("Book3.xlsx")
End Sub
'---------------------------------------------------------------------
'ブックを開くモジュール
Private Sub s_BookOpen(qBook As String)
'
'ブックが開いているときは、ブックをアクティブにする。
'ブックが開いてなければ、ブックを開く
'
Dim wBookName As String
If fsIsOpenBook(qBook) = False Then
wBookName = ThisWorkbook.Path & "\" & qBook
Workbooks.Open Filename:=wBookName
Else
Workbooks(qBook).Activate
End If
End Sub
'---------------------------------------------------------------------
'ブックが開いているかを判定する関数
Private Function fsIsOpenBook(qBookName As String) As Boolean
'
'ブックが開いているか、判定する。(開いている:True 閉じている:False)
'
Dim wBook As Workbook
fsIsOpenBook = False
For Each wBook In Workbooks
If wBook.Name = qBookName Then
fsIsOpenBook = True
Exit Function
End If
Next wBook
End Function
その他
個別の質問は、サークルで受け付けています。(1,000円/1ヶ月)
マクロを作成するには、開発環境を準備してください。
ここから先は
0字