Outlook 2007 VBA-特定のOutlookアカウントでのみアクションを適用します

StackOverflow https://stackoverflow.com/questions/9344617

  •  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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top