[[20200903002813]] 『指定したエクセルファイルを開きたい』(わんわん) ページの最後に飛ぶ

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

 

『指定したエクセルファイルを開きたい』(わんわん)

VBA初心者です。

後輩のために、作業依頼メールがきたら、対応手順の記載されたエクセルファイルを自動で開くようなoutlookのVBAを作成したいと考えています。

作成してみたコードは『作業依頼:担当者わんわんの後輩』と本分に記載されたメールの受信をトリガーとして、対応手順ファイルが開かれる想定なのですが、『オブジェクトが必要です』とエラーが出ます。
いまいちオブジェクトがわからないのですが、解決策などお分かりの方がいらっしゃいましたらご教授お願いします。

以下が作成してみたVBAになります。

Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
Dim objId As Object
Dim Workbooks As Excel.Application

Set myNameSpace = GetNamespace("MAPI")
Set objId = myNameSpace.GetItemFromID(EntryIDCollection)

If InStr(objId.Body, "作業依頼:担当者わんわんの後輩") Then

  Set Workbooks = Excel.Application
  Workbooks.Open (作業手順フロー.xlsx)

End If
End Sub

< 使用 アプリ:outlook365、使用 OS:Windows7 >


 Workbooks は Excel のオブジェクトなので、変数名として使用するとおかしな気がします。

 Dim xlApp As New Excel.Application 
 と宣言して、これでエラーが出ていないならよいですが、エラーが出るようなら

 Dim xlApp
 Set xlApp = CreateObject("Excel.Application")
 で。

 xlApp.Workbooks.Open("D:\Data\作業手順フロー.xlsx")  '// ファイルはフルパスで
 としてどうでしょうか。
(QS) 2020/09/03(木) 01:08

アドバイスありがとうございます。
質問者の わんわんです。

ご教示いただいたコードではファイルはひらかなっかたので、以下のコードにしてみました。
以下のコードを実行てもファイルは開かなかったのですが、おかしな事象が発生いたしました。
openメソッドで開きたいファイルを開くと、『わんわんによって編集中のため読み取りで開く』と言うメッセージが出てきました。
ファイルは開いてもおらず、タスクマネージャで実行中のアプリケーションを確認しても、excelは実行されていませんでした。
※outlookでのマクロで別のファイルを指定して実行した場合、同様の事象が発生いたしました。

ファイルが画面に表示させるにどのようにしたらよろしいでしょうか?
以下がコードになります。

以上、よろしくお願いいたします。

Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
Dim objId As Object

Dim xlApp

Set myNameSpace = GetNamespace("MAPI")
Set objId = myNameSpace.GetItemFromID(EntryIDCollection)

If InStr(objId.Body, "作業依頼:担当者わんわんの後輩") Then

  'Call xlApp
  Set xlApp = CreateObject("Excel.Application")
  xlApp.Workbooks.Open FileName:="D:\Data\作業手順フロー.xlsx"

End If

End Sub

(わんわん) 2020/09/06(日) 02:44


 Set xlApp = CreateObject("Excel.Application")
 のあとに、
 xlApp.Visible = True
 が必要です。

 タスクマネージャーで、EXCEL を強制終了(もしくはPCを再起動)してから、試してみてください。
 画面には出ていませんが、立ち上がっていると思います。

(QS) 2020/09/06(日) 07:05


 例示が良くなかったですね。

  xlApp.Workbooks.Open("D:\Data\作業手順フロー.xlsx")
 を使用する場合は、
 Dim wb As Workbook
 Set wb = xlApp.Workbooks.Open("D:\Data\作業手順フロー.xlsx")
 のようにしないとだめでした。この方法だと、この後 wb を指定して通常の EXCEL 操作が可能になります。

 立ち上げるだけなら
 xlApp.Workbooks.Open "D:\Data\作業手順フロー.xlsx"
 でも可能ですが、()の有無により書き方が異なります。

 
(QS) 2020/09/06(日) 07:27


質問者 わんわんです。

(QS)様
ありがとうございます!
(QS)様のおかげで、想定していた動きをするマクロが作成できました!
本当にありがとうございました!!!
(わんわん) 2020/09/06(日) 15:13


コメント返信:

[ 一覧(最新更新順) ]


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