見出し画像

一瞬でタスク完了!驚きの業務メニュー誕生!

マクロの概要

業務アプリのメニューなので、[業務日報][顧客名簿][売上管理表]など、色々なブックを開くことができるようにします。

ExcelではBookにマクロが保存されるので、マクロを修正するたびにBookを差し替えたりすることがないように、マクロとBookを分けて作成します。

ファイル構成

・スタートメニュー.xlsm(業務アプリをスタートするファイル)
・アプリ_Macro.xlam(実行用マクロファイル)
・アプリ_PGv100.xlam(開発用コードファイル)

上記のサンプルファイルは、OneDrive(Excel業務アプリ大学)からダウンロードすることができます。

画像2

マクロの解説

[スタートメニュー.xlsx]を実行すると下図の画面が表示されます。
プログラムは、下記のように手続きしています。
1. [スタートメニュー.xlsx]を開く
2. [Workbook_Open]イベントから[Start]モジュールを実行する

[Start]モジュールの手続き
3. [アプリ_Macro.xlam]を開く
4. [アプリ_Macro.xlam]ファイルの[MainMenu]モジュールを実行する

画像1

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ヶ月)
マクロを作成するには、開発環境を準備してください。