業務効率化

OutlookタブからエクセルVBAを1クリックで実行

エクセルVBAをOutlookClassicのリボンに登録すれば一押しでマクロを実行できます。単に登録だけだとリボンには表示されないですが、リボン表示を増減させることで目的のマクロを表示させすぐに実行させることができます。

記事の内容

・コード

・ポイント機能

画面

今回の登録マクロは、以前紹介したエクセルVBAによるメールシステムです。outlookのタブにボタンを登録し、一度クリックすることでマクロを実行し動的なメール作成が可能です。

登録するだけだとタブに直接表示されませんが、登録されたタブ機能を削除することで優先表示させることができます。

コード

➤コードはこちら
Option Explicit

Sub RunExcelMacro_VisibleFalse_CloseOnlyTarget()
    Dim xlApp As Object
    Dim xlBook As Object
    Dim filePath As String
    Dim macroName As String
    Dim startedNewExcel As Boolean
    Dim wbFound As Boolean
    Dim wb As Object

    ' 実行したいExcelファイルとマクロ名を指定
    filePath = "●●●●.xlam" ' ← 実際のパスに変更
    macroName = "モジュール名○○.プロシージャ名○○"' ← 実際のマクロ名に変更

    startedNewExcel = False
    wbFound = False

    ' 既存のExcelインスタンスに接続(失敗したら新規起動)
    On Error Resume Next
    Set xlApp = GetObject(, "Excel.Application")
    On Error GoTo 0

    If xlApp Is Nothing Then
        Set xlApp = CreateObject("Excel.Application")
        xlApp.Visible = True '
        startedNewExcel = True
    End If

    ' 対象のブックが既に開かれているか確認
    For Each wb In xlApp.Workbooks
        If wb.FullName = filePath Then
            Set xlBook = wb
            wbFound = True
            Exit For
        End If
    Next wb

    ' 開かれていなければ開く
    If Not wbFound Then
        Set xlBook = xlApp.Workbooks.Open(filePath)
    End If
    
    
    ' ブックのウィンドウを最小化
    xlApp.Windows(xlBook.Name).WindowState = -4140 ' xlMinimized

    ' マクロを実行
    xlApp.Run macroName


    ' Excel自体は閉じない(他の作業に影響しないため)

    ' オブジェクト解放
    Set xlBook = Nothing
    Set xlApp = Nothing
End Sub


ポイント

以下設定を行います。

  • Outlookにエクセルマクロ呼び出し用プロシージャ作成
  • Outlook表示設定からタブを新しく作成し、上のプロシージャを登録
  • 登録したマクロを優先表示するため、既定のタブを削除する

Outlookにエクセルマクロ呼び出し用プロシージャ作成

今回はOutlookメール作成するマクロを登録します。まずはOutlookを開き、Alt+F11で標準モジュールを作成し、プロシージャを作成します。やり方はエクセルと同様です。

上のコードをコピペし、filepathとmacronameを置き換えます。

例えばモジュール名が●SHOW_MAILUF、プロシージャ名がShowMailUfである場合、●SHOW_MAILUF.ShowMailUfのようにマクロ名を転記します。

Outlook表示設定からタブを新しく作成し、上のプロシージャを登録

次にアプリ上部のリボンに登録したマクロを実行できるタブを作成します。やり方はエクセルと同様です。4ステップあります。

①ファイルを開き、オプションを選択します。

②その後、リボンユーザ設定を選択します。ここでマクロを登録する場所を作る為、新しいタブを押し、マクロ実行のタブを追加します。これがリボンに表示される場所のようなものになります。

③追加後、画面左側のコマンド選択からマクロを選択します。開くと、先ほどチェックしたマクロがあるので選択します(名前はプロシージャ名)。そして、②で作ったマクロタブを押して開くと、新しいグループと出るので選択それを選択した状態にします。追加するマクロと、登録するタブ左右を選択した状態で、追加(A)を押しマクロをタブに追加します。

追加後は見た目や表示名を名前の変更から設定できます。

④作ったタブをoutlookアプリ上で優先表示させるため、タブの順番と現在表示されているタブを削除します。ホーム(メール)はoutlookを開いた際のリボン表示される項目を表しています。この部分に優先表示させるために、③で作ったタブの位置をドラッグアンドドロップで上に移動させます。

その後アプリに戻り、マクロが表示されていない場合は、現在表示されているタブで使わない物を削除してください。削除しても設定をすれば再表示可能です。不要なタブを削除することで目的のマクロタブを優先表示させ、ボタンのように使用ができます。

なお今回Outlookに登録したエクセルマクロ呼び出しプロシージャは、開いたエクセルを最小限にしてマクロを実行させています。

-業務効率化