Outlook 2010 VBAでApplication_ItemSendイベントの際に、添付ファイルが特定の形式である事をマジックナンバーで確かめる為、元ファイルのフルパスを取りたいと思っているのですが、AttachmentのDisplayName、Filenameではファイルの名前しか取得出来ず、Pathnameだと空文字(あるいはNull? 型を確かめていなかった……)が返ってきてしまいます。
MailItem_AttachmentAddイベント時であればGetTemporaryFilePathから完全なパスを取得出来るのですが、これでしか取得出来ないとなると、保存していた未送信メールを送信する時などのケースに対応できません。
今は手元にテスト環境がないので試せてないのですが、おそらくGetTemporaryFilePathが使えるイベントを鑑みるに、
lang
1Private g_Path$ 2 3Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean) 4 Dim WithEvents sendMail As MailItem 5 Set FSO = CreateObject("Scripting.FileSystemObject") 6 Set sendMail = Item 7 For Each x In Item.Attachments 8 x.SaveAsFile FSO.GetSpecialFolder(TemporaryFolder) & "\" & FSO.GetTempName 9 Call 特定の形式である事を確かめる関数(g_path) 10 Next 11End Sub 12 13Private Sub sendMail_BeforeAttachmentSave(ByVal Attachment As Attachment, Cancel As Boolean) 14 g_Path = Attachment.GetTemporaryFilePath 15 Cancel = True 16End Sub 17
という形でパスを取得して、自前の関数で処理するという目的が果たせるようになるのではないかと思っています。
ただこの方法は成功したとしても迂遠な手順を踏むことになります。
もっと直接的なアプローチで、フルパスもしくは元ファイルそのもの(コピー含む)を取得出来る方法をご存じの方がいらっしゃいましたらお教え願えれば幸いと思い、この質問を投稿します。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。