[[20170109215640]] 『エクセル立ち上げたらアウトルックも立ち上げる』(あけち) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『エクセル立ち上げたらアウトルックも立ち上げる』(あけち)

エクセル立ち上げだら下記メッセージが立ち上がり尚且つアウトルックが開いてないと触らないようにしたいです

メッセージ
1 配達の依頼は前日の昼までにお願いします
2 キャンセルする場合は◯◯に連絡してください
3 このエクセル使用する際はアウトルックも立ち上げてください
何かいい方法ないですか?マクロ教えてください

< 使用 Excel:Excel2013、使用 OS:Windows8 >


 エクセルを立ち上げたら ということではなく、特定のマクロブックを開いたとき ということですね?

 マクロブックを開いたときに何かやらせよう(今回の場合は MsgBox での表示)とする場合は、
 ThisWorkbookモジュールの Workbook_Open プロシジャに記述します。

 メッセージの1と2は必ず表示するんですか?
 メッセージの3の表示については、アウトルックが立ち上がっていなければ、メッセージを出して終了?
 アウトルックが立ち上がっていれば、3.の表示なしでエクセル継続?

 そのあたりの希望の流れが不明ですけど、たとえば

 Private Sub Workbook_Open()
    Dim mlobj As Object

    On Error Resume Next
    Set mlobj = GetObject(, "Outlook.Application")
    On Error GoTo 0
    If mlobj Is Nothing Then
        MsgBox "アウトルックを立ち上げた後に、再度、ブックを開いてください" & vbLf & "強制終了します"
        ThisWorkbook.Close
    End If

    MsgBox "配達の依頼は前日の昼までにお願いします" & vbLf & "キャンセルする場合は◯◯に連絡してください"
    Set mlobj = Nothing

 End Sub

 もし、エクセルそのものを終了してよければ

 Private Sub Workbook_Open()
    Dim mlobj As Object

    On Error Resume Next
    Set mlobj = GetObject(, "Outlook.Application")
    On Error GoTo 0
    If mlobj Is Nothing Then
        MsgBox "アウトルックを立ち上げた後に、再度、ブックを開いてください" & vbLf & "強制終了します"
        Application.Quit
    Else
        MsgBox "配達の依頼は前日の昼までにお願いします" & vbLf & "キャンセルする場合は◯◯に連絡してください"
        Set mlobj = Nothing
    End If

 End Sub

(β) 2017/01/09(月) 22:26


 以下のほうが、もしかしたら、そちらのイメージに合うかも。

 Private Sub Workbook_Open()
    Dim mlobj As Object

    On Error Resume Next
    Set mlobj = GetObject(, "Outlook.Application")
    On Error GoTo 0
    If mlobj Is Nothing Then
        MsgBox "アウトルックを立ち上げた後に、再度、ブックを開いてください" & vbLf & "強制終了します"
        If Workbooks.Count = 1 Then
            Application.Quit
        Else
            ThisWorkbook.Close False
        End If
    Else
        MsgBox "配達の依頼は前日の昼までにお願いします" & vbLf & "キャンセルする場合は◯◯に連絡してください"
        Set mlobj = Nothing
    End If

 End Sub

(β) 2017/01/09(月) 23:37


 ↑ アウトルックが起動していなかったら、マクロ内で起動させるという流れもあるかも。

(β) 2017/01/10(火) 09:08


ぜひむりやりアウトルック立ち上げられるようなことできますか?
(あけち) 2017/01/10(火) 14:44

GetObject(, "Outlook.Application")は、立ち上がっているOutlookをオブジェクト代入してます。
同じように、新たに立ち上げるならば、CreateObject("Outlook.Application") を試してみてください。
(???) 2017/01/10(火) 15:37


 ???さんとかぶりましたが、たとえば

 Private Sub Workbook_Open()
    Dim mlobj As Object

    On Error Resume Next
    Set mlobj = GetObject(, "Outlook.Application")
    On Error GoTo 0
    If mlobj Is Nothing Then
        With CreateObject("Outlook.Application")
            .CreateItem(0).Display
        End With
    End If
    MsgBox "配達の依頼は前日の昼までにお願いします" & vbLf & "キャンセルする場合は◯◯に連絡してください"

 End Sub

(β) 2017/01/10(火) 15:56


 ↑ アウトルックが起動していない状態で、自動起動しますが、アウトルックの画面が前面に出て
   エクセルが後ろに隠れ、メッセージも、そのままでは見えませんので、以下のように、エクセルを最前面に
   だしなおしたほうがいいですね。

 ThisWorkbookモジュールを以下で置き換えてください。

 Option Explicit

 Private Declare Function SetForegroundWindow Lib "USER32" _
    (ByVal hWnd As Long) As Long

 Private Sub Workbook_Open()
    Dim mlobj As Object

    On Error Resume Next
    Set mlobj = GetObject(, "Outlook.Application")
    On Error GoTo 0
    If mlobj Is Nothing Then
        With CreateObject("Outlook.Application")
            .CreateItem(0).Display
        End With
        SetForegroundWindow Application.hWnd
    End If

    MsgBox "配達の依頼は前日の昼までにお願いします" & vbLf & "キャンセルする場合は◯◯に連絡してください"

 End Sub
 
(β) 2017/01/11(水) 19:19

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.