首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CallByName语法

CallByName语法
EN

Stack Overflow用户
提问于 2014-12-06 20:59:55
回答 2查看 624关注 0票数 1

我想处理收到的邮件。

我的代码有一个冗长的条件语句,用于确定每个收到的电子邮件所属的类别。

根据此条件语句的结果,代码应读取MailItem对象的相应属性。

我想使用CallByName函数来实现这一点。

代码语言:javascript
复制
x = CallByName(itm, PAN_Source, VbGet)

例如,如果传入邮件有附件,则'PAN_Source‘将被赋予值"Attachments.Item(1).DisplayName“。我希望CallByName(itm,PAN_Source,VbGet)返回itm.Attachments.Item(1).DisplayName

代码只是在这个阶段停止执行。

EN

回答 2

Stack Overflow用户

发布于 2020-02-28 01:22:53

这是一个老问题,我知道,但为了正确起见:VBA的CallByName does not将字符串作为

“将对其执行函数的对象的名称。”

在某些地方,MSDN示例被扭曲为plainly wrong one。它必须是每个si的对象。因此,不是:

代码语言:javascript
复制
Call CallByName("itm", PAN_Source, VbGet)

执行此操作:

代码语言:javascript
复制
Call CallByName(itm, "NameMethodThatUsesString_PAN_Source" , VbGet, PAN_Source)

必须在可选的Args()中提供PAN_Source。

另外,如果它将某些东西作为函数(vbMethod)返回,则使用Variant接收它:

代码语言:javascript
复制
auxVar = CallByName (itm, "NameMethodThatUsesString_PAN_Source" , VbGet, PAN_Source)

在排序算法中,我主要使用它来迭代一些集合到SortIt()或通过属性Get或Set检索值,例如:

代码语言:javascript
复制
 ...

        If IsMissing(CallByNameArg0) Then
            If VarType(CallByName(this, SortPropertyName, VbGet)) = vbObject Then
                Set thisValue = CallByName(this, SortPropertyName, VbGet)
            Else
                thisValue = CallByName(this, SortPropertyName, VbGet)
            End If
        Else
            If VarType(CallByName(this, SortPropertyName, VbGet)) = vbObject Then
                Set thisValue = CallByName(this, SortPropertyName, VbGet, CallByNameArg0)
            Else
                thisValue = CallByName(this, SortPropertyName, VbGet, CallByNameArg0)
            End If
        End If
 ...

其中this是我们想要CallBack的对象,CallByNameArg0是一个变体(允许IsMissing(CallByNameArg0 ))

如果有人试图对标准模块执行CallByName,它将不起作用;相反,可以尝试使用Application.Run

票数 2
EN

Stack Overflow用户

发布于 2014-12-06 22:27:06

CallByName函数接受以下参数:

  • 将在其上执行函数的对象的名称。
  • 包含对象的属性或方法的名称的字符串表达式。
  • vbCallType类型的常量,表示要执行的过程的类型(可选)。

我会尝试使用以下代码:

Call CallByName("itm", PAN_Source, VbGet)

您可能会发现Getting Started with VBA in Outlook 2010文章很有帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27331951

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档