【发布时间】:2018-09-04 01:54:56
【问题描述】:
我具体需要什么指导:
在新的邮件撰写中提供本地 VBA 方法的指示,该方法将在任何书面单词/短语(或尽可能频繁)处触发,或有关如何创建的指导动态表单属性的可观察对象。
目的:
一个可能有趣的 Outlook 功能是在撰写邮件时了解其可读性值。我知道可以通过拼写检查来获得它们,但我想避免进行拼写检查以获得结果的负担 - 我希望看到数字在写邮件时上下波动 /em>。
问题:
我有点创建了我需要的函数,但我没有找到一个可以在每写一个字时触发它的方法。我假设它类似于WordEditor_Change、HTMLBody_Change 或类似的东西。它类似于我们在 Excel 中的Worksheet_Change,可以在编辑 Excel 工作表时获取值。
我尝试设置 WordEditor.words.count 的 observable,但也惨遭失败。
到目前为止我所拥有的:
WithEvents myMail As Outlook.MailItem
Private Sub Application_ItemLoad(ByVal Item As Object)
Set myMail = Item
End Sub
Sub checkStatistics()
Dim objInsp As Outlook.Inspector
Set objInsp = myMail.GetInspector
'Enum Outlook: https://msdn.microsoft.com/es-es/VBA/Outlook-VBA/articles/olobjectclass-enumeration-outlook
If objInsp.EditorType = olEditorWord Then ' outlook 2013
'Doc obj: https://msdn.microsoft.com/en-us/vba/word-vba/articles/document-object-word
Set objdoc = objInsp.WordEditor
Dim var As ClassHandlesEvent
Dim tst As classWithEvent
Set var = New ClassHandlesEvent
Set tst = New classWithEvent
var.EventVariable = tst
tst.value = objdoc.Words.Count
MsgBox objdoc.ReadabilityStatistics(9) & ": " & objdoc.ReadabilityStatistics(9).value & vbCrLf & "(Ideal values above 60)"
MsgBox objdoc.ReadabilityStatistics(8) & ": " & objdoc.ReadabilityStatistics(8).value & vbCrLf & "(Ideal values above 60)"
End If
Set objdoc = Nothing
Set objInsp = Nothing
End Sub
【问题讨论】:
-
是的,您可以在打开邮件项时触发 vba 宏-但我不会使用
Application_ItemLoad参见此处的示例-stackoverflow.com/a/40015124/4539709 -
谢谢@ashleedawg - 审查我的帖子,它的结构很糟糕。我没有要求任何人向我提供一段代码,而是要求提供可以帮助我实现所需的特定方法。我已经重写了这个问题,希望现在已经清楚了。
-
感谢@0m3r,正如您在我的代码中看到的那样,我能够创建检查器并以您提供的类似方式使用它(+1!)。但我的问题是我需要一个特定的方法,当正文邮件发生变化时会调用它(即一个不断调用的宏,而不是在创建新邮件时一次性调用)。这有意义吗?对于相同的目标,您会看到任何其他方法吗?
-
您是否知道已经有各种 [免费] Office 插件(包括 Outlook)可以执行此操作以及更多功能? (Here's one 你可能听说过。)
-
@TiagoCardoso - 啊,是的,有趣的 ol' 锁定工作环境,其中“系统安全”最终成为障碍而不是帮助......我也有过这样的工作场所。 :-((这是我的一个相关的recent post。)你找到解决方案了吗?
标签: vba outlook outlook-2016