2017-06-13 28 views
0

My Outlookマクロが一度に機能してから停止しました。解析すると、マクロは "コンパイルエラー:変数が定義されていません"というエラーをスローします。マクロがそのフォルダが存在することを認識していないようです。私はコードを最小限に抑え、繰り返し可能な問題です。マクロはJUNKやDRAFTSなどの標準フォルダを認識しますが、PROCESSED_FOLDERSは認識しません。私はProcessed_Foldersの名前を変更し、別の名前の新しいフォルダを作成しようとしました。喜びはありません。Outlook vbaが既存のフォルダを見つけられません

フォルダ構造は次のとおりです。

[email protected] 
Inbox 
     Drafts 
     Sent 
     Trash 
     Junk 
     Processed_Reports 
Outbox 
Sync Issues1 (This computer only) 
SearchFolders 

CODE:私はこの問題を解決することができたトニー・Dallimoreによってコメントに

Sub testfforfolder() 
    Dim olApp As Outlook.Application 
    Dim objNS As Outlook.NameSpace 
    Dim olFolder As Outlook.MAPIFolder 
    Dim msg As Outlook.MailItem 
    Set olApp = Outlook.Application 
    Set objNS = olApp.GetNamespace("MAPI") 
    Set olFolder = objNS.GetDefaultFolder(olFolderInbox) 
    On Error GoTo xyz 
    Set olFolder = olFolder.Folders("Processed_Reports") 
    MsgBox "Folder Exists" ' This line works if I use DRAFTS or JUNK 
    Exit Sub 
xyz: 
    MsgBox ("Cannot find Folder") ' I get here if I use PROCESSED_REPORTS 
    Exit Sub 
End Sub 
+0

セッション名を知らなくても、セッションフォルダを取得する方法は何ですか? (2)あなたのコードはデフォルトの受信トレイを含む "[email protected]"に依存しています。これは本当ですか?私のシステムでは、デフォルトの受信トレイは "outlook data file"にあります。 –

+0

この回答の冒頭に、https://stackoverflow.com/a/12146315/973283には、問題の原因を確認するのに役立つマクロがあります。 'Set oFolder = Session.Folders(" [email protected] ")。フォルダ(" Inbox ")' –

+0

このスクリプトは「フォルダを見つけることができません」というメッセージボックスの警告をスローします。元のスクリプトでは、INBOXという単語が次の行にハイライト表示されていました。olm.Move Inbox.Folders( "Processed_Reports")[注:olmはDIM olm As Outlook.MailItemでした]フォルダ。 –

答えて

0

感謝。 https://stackoverflow.com/a/12146315/973283へのリンクは私に問題を解決させます。 Outlookの更新版では、選択したアイテムのアカウントではなく、既定の電子メールアカウントが参照されていました。 Processed_Reportsフォルダは、別のアカウントフォルダにのみ存在していました。 Tonyが示唆したように、このソリューションは、ターゲットフォルダをターゲットへのフルパスに設定することでした。私は以下の作業方法で示されているようにもう一つレベルが必要でした。ここ

Sub testfforfolder() 
     Dim olApp As Outlook.Application 
     Dim objNS As Outlook.NameSpace 
    Dim olFolder As Outlook.MAPIFolder 
    Dim msg As Outlook.MailItem 
    Set olApp = Outlook.Application 
    Set objNS = olApp.GetNamespace("MAPI") 
    Set olFolder = objNS.GetDefaultFolder(olFolderInbox) 
    On Error GoTo xyz 
'OLD INCORRECT  
    'Set olFolder = olFolder.Folders("Processed_Reports") 
'WORKING CORRECTION 
    Set TgtFolder= _ 
    Session.Folders("[email protected]"). _ 
    Folders("Inbox").Folders("Processed_Reports") 

    MsgBox "Folder Exists" ' This line works if I use DRAFTS or JUNK 
    Exit Sub 
xyz: 
    MsgBox ("Cannot find Folder") ' I get here if I use PROCESSED_REPORTS 
    Exit Sub 
End Sub 
0

は、(1)「変数定義されていません」エラーのために強調表示されて何行

Sub topFolder() 

    Dim topFolder As Folder 
    Set topFolder = Application.Session.GetDefaultFolder(olFolderInbox).Parent 

    Dim i As Integer 

    For i = 1 To topFolder.Folders.Count 
     Debug.Print topFolder.Folders(i).Name 
    Next i 

    For i = 1 To topFolder.Folders("inbox").Folders.Count 
     Debug.Print topFolder.Folders("inbox").Folders(i).Name 
    Next i 

End Sub 
関連する問題