これは私が質問したprevious questionのフォローアップです。あなたの助けを借りてコミュニティに感謝します。Application_Startup変数はサブの終了後に消えます
初めて新しいアイテムのフォルダをチェックするためにWithEventsコードを作成しようとしています。最終的な計画は、ItemsAddイベントを使用して他の処理をトリガーすることですが、今のところ、それをフォルダに保存し、それほど遠くには行かないようにしようとしています。
以下のApplication_Startupコードを実行すると、直前のウィンドウに正しいclntFldrItmsが見つかりました。問題は、問題のフォルダにアイテムをドラッグすると、ItemAddマクロが起動しないということです。 clntFldrItmsのウォッチを追加しようとすると、変数は何も設定されません。 Application_Startupサブが終了するとすぐに、割り当てが停止します。
すべてのコードはThisOutlookSessionオブジェクトにあります。
私は(たとえばExchangeではなく)SMTP電子メールアドレスで作業している可能性がありますか?
もう一度お手数をおかけします。
EDIT私の応答をEugeneのコメントに追加する。エディタを開いてApplication_Startupサブステップに入ると、clntFldrItms = clntFldr.Items行に移動する前でもclntFldrItmsが正しく割り当てられていることに気付きました。私が踏み込むとすぐに、もう一度消えてしまいます。私はItemAddサブにステップインすることはできませんが、私は他のコードにステップインするとclntFldrItmsは何もありません。
最終編集申し訳ありませんが、私はこれを閉じるのを忘れました。私は問題自体を解決することができませんでしたが、私はそれが私のSMTPアカウントに起因することに気付きました。私はExchangeとの仕事でそれを試してみたところ、うまくいった。私がExchangeで働いていない限り、イベントは発生しないようです。
Option Explicit
Public WithEvents clntFldrItms As Outlook.Items
Private Sub Application_Startup()
Dim clntFldr As MAPIFolder
Set clntFldr = Application.Session.GetDefaultFolder(olFolderSentMail).Folders("Client Emails")
Set clntFldrItms = clntFldr.Items
Set clntFldr = Nothing
Debug.Print clntFldrItms.item(1).Subject
End Sub
Private Sub clntFldrItms_ItemAdd(ByVal item As Object)
Dim bChar As String
bChar = "\/:*?™""® <>|.&@#_+`©~;-+=^$!,'" & Chr(34)
Dim saveName As String
If item.Class = olMail Then
saveName = item.Subject
For x = 1 To Len(bChar)
saveName = Replace(saveName, Mid(bChar, x, 1), "-")
Next x
item.SaveAs "C:\Users\User\Google Drive\8 - VBA work\Preparation for Assisted Responder\Sent Messages Folder\" & _
saveName & ".msg", olMSG
End If
End Sub
VBAマクロはOutlookで実行できますか?トラストセンターの設定をチェックする機会がありましたか? –
おかげさまでユージーン、私はすでにOutlookセッションでマクロを束ねています。いいえサイコロ... – PKB
私はコードを動作させました。それはOutlook 2010とMicrosoft Exchangeで動作しているようですので、問題は解決しています。私は問題がOutlook 2016かSMTP電子メールアドレスのどちらであるか分かりませんが、後者は疑いがあります。誰もが何かを持っていない場合、アイデアのためにハッピー、試してみていただきありがとう乾杯。 – PKB