ExcelからVBAを使用してOutlook Mail .msgファイルを開く -- excel フィールド と vba フィールド と outlook フィールド 関連 問題

Open Outlook Mail .msg file using VBA from Excel












9
vote

問題

日本語

VBA を使用して、指定されたディレクトリから open .msgファイルをオープンしますが、ランタイムエラーが発生し続けます。

コード私には:

<事前> <コード> tableCustomerRegister cust_id cust_fullname cust_username cust_email cust_password cust_mobile_number cust_image cust_address1 cust_address2 cust_city cust_postcode cust_create_acc_time 2

これはランタイムエラーです:

ランタイムエラー '-2147287038(80030002)':

ファイルを開くことができません:自動アンディローヨン・チェンはオフィスから外れています(2014年22月9日).msg。

ファイルが存在しない可能性がありますが、それを開く権限がないか、別のプログラムで開くことができます。ファイルを含むフォルダを右クリックし、[プロパティ]をクリックしてフォルダの権限を確認します。

英語

I'm trying to open .msg files from a specified directory using VBA but I keep getting a runtime error.

The code i have:

Sub bla()     Dim objOL As Object     Dim Msg As Object     Set objOL = CreateObject("Outlook.Application")     inPath = "C:UsersSiliconPlusDesktopSi+ Contact ListsContact_Si+"     thisFile = Dir(inPath & "*.msg")     Set Msg = objOL.CreateItemFromTemplate(thisFile)     ' now use msg to get at the email parts     MsgBox Msg.Subject     Set objOL = Nothing     Set Msg = Nothing End Sub 

Here is the runtime error:

Run-time error '-2147287038 (80030002)':

Cannot open file: AUTO Andy Low Yong Cheng is out of the office (returning 22 09 2014).msg.

The file may not exist, you may not have permission to open it, or it may be open in another program. Right-click the folder that contains the file, and then click properties to check your permissions for the folder.

</div
        
         
         

回答リスト

4
 
vote

Kenneth LIファイルを開くときにフルパスがありませんでした。これを試してください:

<事前> <コード> objdump4
 

Kenneth Li You didn't had the full path when opening the file. Try this:

Sub bla_OK() Dim objOL As Object Dim Msg As Object Set objOL = CreateObject("Outlook.Application") inPath = "C:UsersSiliconPlusDesktopSi+ Contact ListsContact_Si+" thisFile = Dir(inPath & "*.msg") 'Set Msg = objOL.CreateItemFromTemplate(thisFile) Set Msg = objOL.Session.OpenSharedItem(inPath & "" & thisFile) ' now use msg to get at the email parts MsgBox Msg.Subject Set objOL = Nothing Set Msg = Nothing End Sub 
</div
 
 
3
 
vote

エラーが発生した場合は、 MsgBox (コメントを外す必要がある)の右後半の Dim Msg As Object )を試してください。 Plain <事前> <コード> Sub Kenneth_Li() Dim objOL As Outlook.Application Dim Msg As Outlook.MailItem Msgbox "If you get an error, try the Late Biding right under this (need to be uncommented)" 'Dim objOL As Object 'Dim Msg As Object Set objOL = CreateObject("Outlook.Application") inPath = "C:UsersSiliconPlusDesktopSi+ Contact ListsContact_Si+" thisFile = LCase(Dir(inPath & "*.msg")) Do While thisFile <> "" 'Set Msg = objOL.CreateItemFromTemplate(thisFile) 'Or 'Set Msg = objOL.OpenSharedItem(thisFile) 'Set Msg = GetNameSpace("MAPI").OpenSharedItem(thisFile) 'Eventually with Shell command (here for notepad) 'Shell "notepad " & thisFile Set Msg = objOL.Session.OpenSharedItem(thisFile) Msg.display MsgBox Msg.Subject thisFile = Dir Loop Set objOL = Nothing Set Msg = Nothing End Sub

またはあなたはそこにある素晴らしいVB解決策を見つけることができます: http://www.mrexcel.com/forum/excel-questions/551148-open-msg-file-using-visual-basic-applications.html#post2721847 < / P>

そしてここでは Shell 方法の詳細については、http://p2p.wrox.com/access-vba/27776-how-open-msg-file-vbulletin。 HTML#POST1384​​11 "rel =" nofollow "> http://p2p.wrox.com/access-vba/27776-how-open-msg-file-vbulletin.html#post138411

 

If you get an error, try the Late Biding (Dim Msg As Object) right under the MsgBox (need to be uncommented) :

Sub Kenneth_Li()     Dim objOL As Outlook.Application     Dim Msg As Outlook.MailItem     Msgbox "If you get an error, try the Late Biding right under this (need to be uncommented)"     'Dim objOL As Object     'Dim Msg As Object      Set objOL = CreateObject("Outlook.Application")     inPath = "C:UsersSiliconPlusDesktopSi+ Contact ListsContact_Si+"      thisFile = LCase(Dir(inPath & "*.msg"))     Do While thisFile <> ""          'Set Msg = objOL.CreateItemFromTemplate(thisFile)         'Or         'Set Msg = objOL.OpenSharedItem(thisFile)         'Set Msg = GetNameSpace("MAPI").OpenSharedItem(thisFile)          'Eventually with Shell command (here for notepad)         'Shell "notepad " & thisFile         Set Msg = objOL.Session.OpenSharedItem(thisFile)           Msg.display          MsgBox Msg.Subject         thisFile = Dir     Loop       Set objOL = Nothing     Set Msg = Nothing End Sub 

Or you can find a nice VB solution there : http://www.mrexcel.com/forum/excel-questions/551148-open-msg-file-using-visual-basic-applications.html#post2721847

And here for more details on Shell method : http://p2p.wrox.com/access-vba/27776-how-open-msg-file-vbulletin.html#post138411

</div
 
 
         
         
1
 
vote

もう1つの方法はプログラムでファイルを実行することです(VBAで Shell コマンドを使用してください)。オープンインスペクタウィンドウを開くことができるOutlookで開きます。

 

Another way is to run the file programmatically (in VBA use the Shell command). It will be opened in Outlook where you can get an active inspector window with the item opened.

</div
 
 
0
 
vote

コードをフォローすることを確認し、コードを変更することができます

<事前> <コード> Sub CreateFromTemplate() Dim MyItem As Outlook.MailItem Set MyItem = Application.CreateItemFromTemplate("C: emp*.msg") MyItem.Display End Sub
 

You should check follow code and can modify your code

Sub CreateFromTemplate()  Dim MyItem As Outlook.MailItem  Set MyItem = Application.CreateItemFromTemplate("C: emp*.msg")  MyItem.Display  End Sub  
</div
 
 
0
 
vote

これを試してください <事前> <コード> Sub GetMSG() ' True includes subfolders ' False to check only listed folder ListFilesInFolder "C:UserslengkganDesktopTesting", True End Sub Sub ListFilesInFolder(SourceFolderName As String, IncludeSubfolders As Boolean) Dim FSO As Scripting.FileSystemObject Dim SourceFolder As Scripting.Folder, SubFolder As Scripting.Folder Dim FileItem As Scripting.File Dim strFile, strFileType, strAttach As String Dim openMsg As MailItem Dim objAttachments As Outlook.Attachments Dim i As Long Dim lngCount As Long Dim strFolderpath As String 'where to save attachments strFolderpath = "C:UserslengkganDesktopTesting" Set FSO = New Scripting.FileSystemObject Set SourceFolder = FSO.GetFolder(SourceFolderName) For Each FileItem In SourceFolder.Files strFile = FileItem.Name ' This code looks at the last 4 characters in a filename ' If we wanted more than .msg, we'd use Case Select statement strFileType = LCase$(Right$(strFile, 4)) If strFileType = ".msg" Then Debug.Print FileItem.Path Set openMsg = Outlook.Application.CreateItemFromTemplate(FileItem.Path) openMsg.Display 'do whatever Set objAttachments = openMsg.Attachments lngCount = objAttachments.Count If lngCount > 0 Then For i = lngCount To 1 Step -1 ' Get the file name. strAttach = objAttachments.Item(i).Filename ' Combine with the path to the Temp folder. strAttach = strFolderpath & strAttach ' Save the attachment as a file. objAttachments.Item(i).SaveAsFile strAttach Next i End If openMsg.Close olDiscard Set objAttachments = Nothing Set openMsg = Nothing ' end do whatever End If Next FileItem If IncludeSubfolders Then For Each SubFolder In SourceFolder.SubFolders ListFilesInFolder SubFolder.Path, True Next SubFolder End If Set FileItem = Nothing Set SourceFolder = Nothing Set FSO = Nothing End Sub

編集:参照を追加する方法
ツール&gtをクリックします。参照。 必要な参照を確認してください 画像の説明が入力されていますここで

 

Try this

Sub GetMSG() ' True includes subfolders ' False to check only listed folder    ListFilesInFolder "C:UserslengkganDesktopTesting", True End Sub   Sub ListFilesInFolder(SourceFolderName As String, IncludeSubfolders As Boolean)     Dim FSO As Scripting.FileSystemObject     Dim SourceFolder As Scripting.Folder, SubFolder As Scripting.Folder     Dim FileItem As Scripting.File     Dim strFile, strFileType, strAttach As String     Dim openMsg As MailItem  Dim objAttachments As Outlook.Attachments Dim i As Long Dim lngCount As Long Dim strFolderpath As String  'where to save attachments strFolderpath = "C:UserslengkganDesktopTesting"      Set FSO = New Scripting.FileSystemObject     Set SourceFolder = FSO.GetFolder(SourceFolderName)      For Each FileItem In SourceFolder.Files      strFile = FileItem.Name  ' This code looks at the last 4 characters in a filename ' If we wanted more than .msg, we'd use Case Select statement strFileType = LCase$(Right$(strFile, 4))   If strFileType = ".msg" Then     Debug.Print FileItem.Path  Set openMsg = Outlook.Application.CreateItemFromTemplate(FileItem.Path) openMsg.Display     'do whatever  Set objAttachments = openMsg.Attachments     lngCount = objAttachments.Count      If lngCount > 0 Then      For i = lngCount To 1 Step -1      ' Get the file name.     strAttach = objAttachments.Item(i).Filename      ' Combine with the path to the Temp folder.     strAttach = strFolderpath & strAttach      ' Save the attachment as a file.     objAttachments.Item(i).SaveAsFile strAttach      Next i     End If   openMsg.Close olDiscard  Set objAttachments = Nothing Set openMsg = Nothing  ' end do whatever       End If     Next FileItem     If IncludeSubfolders Then         For Each SubFolder In SourceFolder.SubFolders             ListFilesInFolder SubFolder.Path, True       Next SubFolder     End If      Set FileItem = Nothing     Set SourceFolder = Nothing     Set FSO = Nothing  End Sub 

Edited : How to add the reference
Click Tools > Reference. Check the needed reference enter image description here

</div
 
 
         
         

関連する質問

0  不明なOutlook MailItem EntriesId  ( Unknown outlook mailitem entryid ) 
My Outlookアドインメール項目のカスタムフォームを表示するために、インスペクタオブジェクトのNewInspectorイベントを処理します。 イベントのパラメータとして渡されるインスペクタオブジェクトのCurrentItemのEntriveIdを取得で...

7  複数のデバイス上の同時Outlookのリマインダー  ( Simultaneous outlook reminders on multiple devices ) 
免責事項:これは実際にはプログラミングの質問ではありませんが、スタックオーバーフローに関する聴衆は、そこにあるほとんどの質問/回答サイトよりも答えがある可能性が高いと感じます。 あなたの質問を盗むために、私を許してください。ジョエルは戻ってきたときにPod...

1  Mopi32.dllスタブをMS Wordから "添付ファイルとして送信できるようにする方法は?  ( How to create a mapi32 dll stub to be able to send as attachment from ms word ) 
Microsoft Wordには、ドキュメントが添付されたOutlookで新しいメッセージを作成する「添付ファイルとして送信」機能があります。 Outlookをカスタムメールエージェントと置き換えたいのですが、これを達成する方法がわかりません。今、私のメ...

4  Outlook Eメールから埋め込み画像を抽出する  ( Extracting embedded images from outlook email ) 
MicrosoftのCDO(コラボレーションデータオブジェクト)を使用して、Outlookメールボックスからメールをプログラムで読み取り、埋め込み画像の添付ファイルを保存しています。私はPythonからWin32の拡張を使ってこれをやろうとしていますが、CD...

0  Outlook 2003以降のすべての送信メールへのイメージとシグネチャを埋め込む  ( Outlook 2003 embedding signatures with images to all sent emails ) 
私はいくつかの退屈な会計のものをする勝利フォームアプリケーションを持っていて、それはそれがいくつかのラッキーレシピエントにデータを送ります。私はOutlook 12.0 Interopオブジェクトと私のアプリケーション環境の環境がXPのOffice 2003か...

0  Outlook 2007でコピーされた予定アイテムの数を見つける方法  ( How to find count of appointment items copied in outlook 2007 ) 
Outlook 2007で2つのカレンダーが2つのカレンダーを持っているとテストと実際のカレンダーがあると、テストカレンダーですべての予定を表示し、コピーし、20から30の予定についてコピーし、実際のカレンダーの「すべての予定アイテムビュー」で貼り付けます。...

3  NETでオフィスフラグからOutlookを取得する  ( Getting the outlook out of office flag with net ) 
私の会社はExchange 2003を使用しています。 .NETコードからの交換を照会して、誰かが「Office Office」AssissStantがオンまたはオフの場合に調べることができますか? ...

3  Outlook添付ファイル()はメールボディに表示されていません  ( Outlook attachments add is not showing in mail body ) 
C#VS-2008 Outlook 2007で新しいメール項目を作成し、ファイルを添付しています。最初の問題は、添付ファイルを示す件名の下にある添付領域が見えないことです。電子メールを送信すると、そのプロパティは添付ファイルがあることを示し、電子メールサイズ...

1  Office 365 REST API / $ COUNTフィルタが誤ったデータを与える  ( Office 365 rest api count filter giving wrong data ) 
さまざまなオブジェクトのレコード数を取得しようとしています。 / $ COUNTフィルタリングされたAPIの応答は矛盾して誤った応答を与えられています。 this.> 使用説明書のためのドキュメントリンク リクエストURL: https://outlook....

0  ldap - "base"ディレクトリを見つけます  ( Ldap find the base directory ) 
現在私の仕事にPBXシステムを設定しています。私はFigurungをExchange LDAPサーバーに接続する方法を困っています。より具体的にするには、LDAPベースディレクトリがどのようになっているのでしょうか。 私はo = fooのようなものを入力しなけ...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有