Vba 已解决-子应用程序_Quit()清除已定义变量的值
我试图实现的一个简单想法是在Outlook关闭时弹出一个消息框,告诉您Outlook打开的时间和关闭的时间。以下是我尝试实现这一目标的代码:Vba 已解决-子应用程序_Quit()清除已定义变量的值,vba,outlook,Vba,Outlook,我试图实现的一个简单想法是在Outlook关闭时弹出一个消息框,告诉您Outlook打开的时间和关闭的时间。以下是我尝试实现这一目标的代码: Private startTime As String Private endTime As String Private Sub Application_Startup() startTime = CStr(TimeValue(Now)) End Sub Private Sub Application_Quit() endTime =
Private startTime As String
Private endTime As String
Private Sub Application_Startup()
startTime = CStr(TimeValue(Now))
End Sub
Private Sub Application_Quit()
endTime = CStr(TimeValue(Now))
MsgBox _
"Session started at " + startTime + vbNewLine + _
"Session ended at " + endTime, _
vbOkOnly + vbInformation, _
"Session Information"
End Sub
这就是我期望得到的:
但是,我遇到的问题是,当触发应用程序_Quit()时,我的变量被清除。我收到此消息框:
我知道startTime在应用程序启动()时被赋予了一个值。当我将以下代码行添加到应用程序_Startup()的末尾时,我会收到下面的消息框
MsgBox _
"Session started at " + startTime, _
vbOkOnly + vbInformation, _
"Session Information"
为什么Application\u退出()
强制startTime=“”
,有什么办法吗
已解决-多亏了Adirmola-使用FSO创建临时文本文件,不再需要全局变量
startTime
和endTime
,因为它们的值存储在临时文件中,并在应用程序退出()过程中调用
使用FSO创建临时文本文件时,不需要全局变量startTime
和endTime
,因为它们的值存储在临时文件中,并在应用程序退出()过程中调用
使用FSO创建临时文本文件时,不需要全局变量startTime
和endTime
,因为它们的值存储在临时文件中,并在应用程序退出()过程中调用
你能提供更多的信息吗?这些是在一个模块中运行,还是在应用程序级别运行,等等?问题是全局变量生存期-。我想解决这个问题的一种方法是使用文本文件临时存储开始时间。@TylerH SUB不会从任何地方显式调用。据我所知,“Application_Startup()”和“Application_Quit()”是内置函数,分别在Outlook应用程序打开和关闭时执行。它们在应用程序级别运行,位于“ThisOutlookSession”中。谢谢@Adirmola!使用文本文件似乎可以做到这一点。问答网站也是如此。如果你发现了自己的答案,应该将其作为自己的答案发布,而不是编辑到问题中。你能提供更多的信息吗?这些是在一个模块中运行,还是在应用程序级别运行,等等?问题是全局变量生存期-。我想解决这个问题的一种方法是使用文本文件临时存储开始时间。@TylerH SUB不会从任何地方显式调用。据我所知,“Application_Startup()”和“Application_Quit()”是内置函数,分别在Outlook应用程序打开和关闭时执行。它们在应用程序级别运行,位于“ThisOutlookSession”中。谢谢@Adirmola!使用文本文件似乎可以做到这一点。问答网站也是如此。如果你发现了自己的答案,应该将其作为自我答案发布,而不是编辑到问题中。
Private FSO As Object
Private oFile As Object
Private Sub Application_Startup()
Set FSO = CreateObject("Scripting.FileSystemObject")
Set oFile = FSO.CreateTextFile("C:\Users\username\Documents\Outlook Files\temp.txt")
oFile.WriteLine "Session started at " + CStr(TimeValue(Now))
oFile.Close
Set oFile = Nothing
Set FSO = Nothing
End Sub
Private Sub Application_Quit()
Set FSO = CreateObject("Scripting.FileSystemObject")
Set oFile = FSO.OpenTextFile("C:\Users\username\Documents\Outlook Files\temp.txt")
MsgBox _
oFile.readline + vbNewLine + _
"Session ended at " + CStr(TimeValue(Now)), _
vbOKOnly + vbInformation, _
"Session Information"
oFile.Close
Set oFile = Nothing
FSO.DeleteFile ("C:\Users\username\Documents\Outlook Files\temp.txt")
Set FSO = Nothing
End Sub
Private FSO As Object
Private oFile As Object
Private Sub Application_Startup()
Set FSO = CreateObject("Scripting.FileSystemObject")
Set oFile = FSO.CreateTextFile("C:\Users\username\Documents\Outlook Files\temp.txt")
oFile.WriteLine "Session started at " + CStr(TimeValue(Now))
oFile.Close
Set oFile = Nothing
Set FSO = Nothing
End Sub
Private Sub Application_Quit()
Set FSO = CreateObject("Scripting.FileSystemObject")
Set oFile = FSO.OpenTextFile("C:\Users\username\Documents\Outlook Files\temp.txt")
MsgBox _
oFile.readline + vbNewLine + _
"Session ended at " + CStr(TimeValue(Now)), _
vbOKOnly + vbInformation, _
"Session Information"
oFile.Close
Set oFile = Nothing
FSO.DeleteFile ("C:\Users\username\Documents\Outlook Files\temp.txt")
Set FSO = Nothing
End Sub