2017-05-02 12 views
1

を開くことができません。現在、以下のコードは.msg outlookファイルを開くだけですが、エラーが表示されます。enter image description hereは、私は約90 .MSG、私は、開いているファイルを.csvファイルとオフを保存するために、Excelの添付ファイルを変換する必要がOutlookファイルを持って.MSGファイルに

.msgファイルを開くにはどうすればよいですか。

スクリプト:

Sub OpenMSGRenameDownloadAttachement() 

    Dim objOL As Outlook.Application 
    Dim Msg As Outlook.MailItem 

    Dim MsgCount As Integer 

    Set objOL = CreateObject("Outlook.Application") 

    'Change the path given month, ie. do this for Jan, Feb, April 
    inPath = "C:\January Messages" 

    thisFile = LCase(Dir(inPath & "\*.msg")) 
    Do While thisFile <> "" 

     Set Msg = objOL.Session.OpenSharedItem(thisFile) 

     Msg.Display 

     MsgBox Msg.Subject 
     thisFile = Dir 
    Loop 

    Set objOL = Nothing 
    Set Msg = Nothing 

End Sub 
+1

私は、これは明白な疑問ですが、ファイルが既に開いていると思いますか?例えば。 Outlookで?または、あなたのコードで失敗した以前の試みからのExcelで?または、以前の成功した試行からのExcelで? (あなたは明示的に 'Close'を行っているようには見えないので、まだ開いているかもしれません)また、このページも適用されます:https://support.microsoft.com/en-us/help/2633737/the -openshareditem-method-for-outlook-holding-a-file-on-signed-.msgファイル – YowE3K

+0

これは一度だけのことです。少なくとも、電子メールを開くために、これを書き直すにはどうしたらいいですか?そこからExcelを変換することができます。 – Sauron

+0

あなたはDirを間違って使用しています。 thisFileという<>は、 "MSG" Then'、そしてあなたが物理的に開いているメッセージには必要ありません "'右(thisFileという、3)=場合は 'If条件を入れて" ながら 'thisFileという= DIR(INPATH)してみ'と '行った後私が知る限り添付ファイルを取得します。 – Tehscript

答えて

5

はこれを試してみてください:

Sub OpenMSGRenameDownloadAttachement() 
Dim Msg As Outlook.MailItem 
Dim objAtt As Outlook.Attachment 
Set objOL = CreateObject("Outlook.Application") 
Set objNs = objOL.GetNamespace("MAPI") 
'objNs.Logon 

inPath = "C:\January Messages\" 
outPath = "C:\January Messages\attachments\" 'create this folder for attachments or use your own 
thisFile = Dir(inPath & "*.msg") 

Do While Len(thisFile) > 0 
    Set Msg = objNs.OpenSharedItem(inPath & thisFile) 
    'MsgBox inPath & thisFile 
    'MsgBox Msg.Subject 
    'MsgBox Msg.SenderEmailAddress 
    'MsgBox Msg.Recipients.Item(1).Address 
    For Each objAtt In Msg.Attachments 
     If Right(objAtt, 4) = "xlsx" Or Right(objAtt, 3) = "xls" Then 
      objAtt.SaveAsFile outPath & Split(objAtt.DisplayName, ".")(0) & ".csv" 
     End If 
    Next 
    thisFile = Dir 
Loop 

Set objOL = Nothing 
Set objNs = Nothing 
End Sub 
+0

これは、何も現れません。うまくいかないとどうなりますか? – Sauron

+0

変更' Debug.Print'を実行したときに動作しませんでした – Tehscript

+0

'へ – Sauron

関連する問題