我正在尝试获取我在MS Outlook中设置的规则的条件的文本值。
我创建了一个名为“TestRule”的规则,其条件基于消息Body中的文本(它必须包含文本“zzz”)以及基于消息标题中的文本的条件(它必须具有文字“aaa”中的)。 (当然,此规则可能永远不会运行,这只是为了测试我是否可以读取规则中的条件。)规则和条件已启用。
以下是我正在使用的代码
Dim olRules As Outlook.Rules
Dim olRule As Outlook.Rule
Set olRules = Application.Session.DefaultStore.GetRules
Set olRule = olRules.Item("TestRule")
Debug.Print olRule.Conditions.Body.Text
Debug.Print olRule.Conditions.MessageHeader.Text
但是,两个debug.print行都会出现“Type mismatch”错误。
如何读取条件的当前值?
(我已经检查并仔细检查:是一条名为“TestRule”的规则。)
答案 0 :(得分:1)
GD DRC,
我已经为你的问题付出了更多努力,我想我已经弄清楚你为什么会遇到类型不匹配的问题。
您可能在“正文”条件以及“消息标题”条件中添加了一些关键字? 这些单独的条目将添加到数组中,即“olRule.Conditions.Body.Text”数组。
以下代码行;
Private Sub printArray(ByRef pArr As Variant)
Dim readString As Variant
If (IsArray(pArr)) Then 'check if the passed variable is an array
For Each readString In pArr
If TypeName(readString) = "String" Then 'check if the readString is a String variable
Debug.Print readString
End If
Next
End If
End Sub
本质上是要求'debug.print'mehtod打印一个数组,但它不知道如何做到这一点。因为它不了解要打印的阵列的哪个部分。 根据您创建的条目数量,每个条目的标识符必然需要一个标识符指向唯一的数组条目。
所以:
有几种方法可以解决您的编码问题:
在该行上设置断点:
olRule.Conditions.Body.Text
因此执行在执行代码行之前就会停止。 打开“本地窗口”(通过视图|本地窗口)并打开olRule.Text,您将看到添加的数组条目。
主要子程序
cat bigfile.txt | parallel --pipe --cat -k perl ./splitwords.pl words-en.txt {}
printArray子程序
cat bigfile.txt | parallel --pipe --fifo -k perl ./splitwords.pl words-en.txt {}
你也可以在第一个子程序中集成第二个子程序,但更好的编码实践是在函数或单独的子程序中执行重复任务(然后你可以将它用于同一模块中的其他方法:-))
相信这将为您提供解决方案!
Goodluck!
答案 1 :(得分:0)
GD DRC,
您确定默认商店中存在名称“TestRule”的规则。
如果我执行上面的代码,我会得到完美的结果(虽然没有打印任何值,因为没有设置值。所以上面代码中的语法很好。
尝试添加:
Debug.Print TypeName(olRule)
如果实际设置了olRule,则立即窗口中的结果应为“规则”。
所以整体代码应该是:
Dim olRules As Outlook.Rules
Dim olRule As Outlook.Rule
Set olRules = Application.Session.DefaultStore.GetRules
Set olRule = olRules.Item("TestRule")
Debug.Print TypeName(olRule)
Debug.Print olRule.Conditions.Body.Text
Debug.Print olRule.Conditions.MessageHeader.Text
希望能引导你朝着正确的方向前进!
干杯!