Outlook 2007 VBA-特定のOutlookアカウントでのみアクションを適用します
-
27-10-2019 - |
質問
次のVBAプロジェクトを使用して、すべての新しい電子メールで件名フィールドの先頭にデフォルトの文字列を適用しています。ただし、Outlookが特定のアカウントに開かれたときにのみこのスクリプトを機能させたいのですが(つまり、2つのOutlookユーザーアカウント/PSTファイルがあります - 個人およびビジネス - では、件名の文字列が電子メールに追加されている場合にのみ使用したいビジネスアカウント)指が交差しました - あなたの助けをありがとう。カーク
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
If MsgBox("Send with 'Myrtleford Festival" at start of subject?", vbYesNo, "Send as Festival mail") = vbYes Then
If (Left(Trim(Item.Subject), 11)) <> "The " Then
Item.Subject = "The Myrtleford Festival 2012/ " + Item.Subject
End If
End If
End Sub
解決 2
うんいいね。実際、私は完全に愚かでエレガントなソリューションに出くわしました。 OutlookのTrust Center> Macro Securityでは、「すべてのマクロにWARN」のオプションを選択しました。プロフィールのいずれかにOutlookを開くと、マクロを有効/無効にするかどうかを尋ねるポップアップが表示されます。 VBAスクリプトは唯一のマクロ実行であるため、デフォルトのサブジェクト文字列が使用されているかどうかを簡単にフィルタリングできます。これは永遠に100%動作します(別のマクロ/VBAスクリプトを使用する理由がわからないため)
他のヒント
これがアプローチの基礎です。
複数のアカウントを持っているので、それはいつかですが、私がやったとき、トップレベルのフォルダーは非常に異なっていました。以下のコードは、上位レベルフォルダーの名前を即時ウィンドウに出力します。私の現在のシステムでは、これは次のとおりです。
Personal Folders
Archive Folders
Test Folders
2つのアカウントが異なるトップレベルフォルダーを持っている場合、アカウントをそれと区別できます。
このアプローチが気に入っているが、トップレベルのフォルダーが同じ場合、階層の任意の深さで特定のフォルダーを検索するルーチンがあります。メインフォルダーが同じであっても、サブフォルダーの一部が異なると思います。
Sub AnswerA()
Dim InxIFLCrnt As Integer
Dim TopLvlFolderList As Folders
Set TopLvlFolderList = _
CreateObject("Outlook.Application").GetNamespace("MAPI").Folders
For InxIFLCrnt = 1 To TopLvlFolderList.Count
Debug.Print TopLvlFolderList(InxIFLCrnt).Name
Next
End Sub