質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Outlook

Microsoft OutlookはMicrosoft Officeの一部として組み込まれている、のユーザー管理とメーラーの機能を持ち合わせたソフトウェアです。

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

Q&A

1回答

1226閲覧

OUTLOOKに添付されたエクセルファイルを自動で開く

xiamuji

総合スコア0

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Outlook

Microsoft OutlookはMicrosoft Officeの一部として組み込まれている、のユーザー管理とメーラーの機能を持ち合わせたソフトウェアです。

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

0グッド

0クリップ

投稿2021/10/05 09:38

編集2021/10/05 23:07

OUTLOOK VBAについて質問です。
特定のメールに添付されたエクセルファイルを自動で開きたいのですが
名前が変更されたか、移動や削除が行われた可能性があります。
と表示されました。
コードは以下の通りです。
エラーが出たのはapp.workbooks.open(objItem.buf)です。

Dim i As Long, mCount As Long, MaxCount As Long, eMailName As String, j As Long
Dim myNamespace As NameSpace, app As Excel.Application
Dim outlook As Object
Dim myInbox As Object
Dim InboxFolder As Variant
Dim myItem As outlook.MailItem
Dim objIns As Inspector, objItem As Object, objAttachments As Object
Dim buf As String

Set outlook = CreateObject("Outlook.Application") Set app = CreateObject("excel.application") Set myNamespace = outlook.GetNamespace("MAPI") Set InboxFolder = myNamespace.GetDefaultFolder(6) app.Visible = True mCount = InboxFolder.Items.Count If mCount > 200 Then MaxCount = mCount - 200 Else MaxCount = 1 End If For i = mCount To MaxCount Step -1 eMailName = InboxFolder.Items(i).Subject If InboxFolder.Items(i).UnRead = True Then If InStr(eMailName, "依頼書送付") > 0 Or _ InStr(eMailName, "連絡書送付") > 0 Then Set myItem = InboxFolder.Items(i) myItem.Display Set objIns = Application.ActiveInspector Set objItem = objIns.CurrentItem For j = 1 To objItem.Attachments.Count Debug.Print objItem.Attachments(j) buf = objItem.Attachments(j) Debug.Print Dir(objItem.Attachments(j)) If InStr(buf, "xlsm") Then

⇒ app.Workbooks.Open (objItem.buf)
End If
Next j
End If
End If

Next i Set myItem = Nothing Set outlook = Nothing Set app = Nothing Set myNamespace = Nothing Set InboxFolder = Nothing Set objIns = Nothing Set objItem = Nothing Set objAttachments = Nothing

End Sub

メールは受信トレイの中にあり、メールの特定はできています。
メールに添付されたファイルの保存先の特定はどうすれば良いのでしょうか。
プログラム初心者で大変申し訳ありませんが宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hex309

2021/10/05 22:28 編集

そのメッセージが表示されたのはどのタイミングですか? コードがあるのなら提示してください 「移動や削除が行われた可能性があります」が表示されたタイミング(もしコードがあればコードを)を教えて下さい なお、上記について回答いただける場合、このメッセージに返信するのではなく、質問を編集していただくと、多くの方にも目についてよろしいかと
xiamuji

2021/10/05 23:03

ご提案、有難うございます。 初心者&独学のためこちらが頼りです。 提案して頂いた通り、質問を編集させていただきます。
guest

回答1

0

添付ファイルを直接開くのではなく、いったん保存してから開く、ということではいかがでしょうか。

また、以下の部分ですが、変数bufは文字列型の変数ですから、「objItem.buf」はかけないですよね。、

VBA

1app.Workbooks.Open (objItem.buf)

添付ファイルを保存する方法は、以下を参考にしてください。
https://try2explore.com/questions/jp/10564833

なお、提示いただいたコードを記述しているアプリはOutlookですか?Excelですか?
両方のアプリケーションをCreateObjectしているので、書いているアプリによって片方は不要になるかと。

投稿2021/10/06 00:28

hex309

総合スコア761

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

xiamuji

2021/10/06 01:49

あ!!恥ずかしいですね!申し訳ありません。 アプリはOUTLOOKです。 一度保存してから開くようにしてみます。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問