首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Outlook错误:未定义引用Excel工作簿的用户定义类型

Outlook错误:未定义引用Excel工作簿的用户定义类型
EN

Stack Overflow用户
提问于 2022-04-21 15:08:32
回答 1查看 146关注 0票数 1

我每天收到50封带有Excel表格的邮件。我要将每个Excel工作表的第一行添加到我的计算机上的现有Excel工作表中。

我首先编写了一个在本地合并这些工作表的脚本(我下载了Excel表,然后运行了我的脚本),这里一切都正常。

现在我试图将脚本直接放到Outlook中,所以每当收到其中一封电子邮件时,就会自动完成。

最初,我想添加一个应该运行宏的规则,但这是行不通的。我找到的解决方案是在“ThisOutlookSession”中的子例程中调用宏:

这是我第一次为outlook编写宏,所以我不确定我是否正确地传递了参数。

当我的Modul2被调用时,我立即得到错误

未定义用户定义类型

Dim wb_master As Workbook线上,在Dim wb_email As Workbook上。

下面是代码的一个小示例(这里它只是将文件的名称添加到ID列中):

代码语言:javascript
运行
复制
Sub Merge_oewaReport(itm As Outlook.MailItem)
Dim wb_path As String
Dim wb_master As Workbook
Dim ws_master As String

Dim objAtt As Outlook.Attachment
Dim FileName As String
Dim wb_email As Workbook
Dim j As Integer
Dim ir_last As Integer

wb_path = "\\swi56prof01\UserData$\heinreca\Documents\Outlook-Dateien\AllData.xlsx"
Set wb_master = Workbooks.Open(wb_path)
ir_last = wb_master.Worksheets(ws_master).Range("A" & Rows.Count).End(xlUp).Row

For Each objAtt In itm.Attachments
    FileName = objAtt.DisplayName
    Set wb_email = Workbooks.Open(FileName, True, True)
    fID = Split(FileName, " - ")
    j = wb_master.Worksheets(ws_master).Cells.Find(What:="ID", SearchDirection:=xlNext, SearchOrder:=xlByColumns).Column
    wb_master.Worksheets(ws_master).Cells(ir_last + 1, j) = fID(0)
Next

我检查了Tools>references的解决方案。MicrosoftOffice16.0对象库上的勾号已经存在。

我试图定义“新工作簿”,而不仅仅是“工作簿”。

编辑:我决定尝试后期绑定方法,并更改了一些Dims:

代码语言:javascript
运行
复制
Dim app_master As Object
Dim wb_master As Object
Dim ws_master As Object
Dim ic_last As Integer

其次是:

代码语言:javascript
运行
复制
Set app_master = CreateObject("Excel.Application")
Set wb_master = app_master.Workbooks.Open(wb_path)
Set ws_master = wb_master.Sheets(1)

但是,现在它返回一个错误。

变量未定义

在线上:

代码语言:javascript
运行
复制
ic_last = ws_master.Cells.Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByColumns).Column

它突出了"xlPrevious“。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-21 15:26:33

当我的module2被调用时,我立即得到“用户定义的类型未定义”错误,在行Dim wb_master作为工作簿,在Dim wb_email上作为工作簿。

解决这一问题有两种可能的方法:

  1. 添加Excel引用,以便声明的类型可供VBA使用。这叫做早期绑定。
  2. 如果不想添加Excel引用,则将对象声明为对象。这就是所谓的后期绑定。

自动化中使用早期绑定和后期绑定早期绑定与后期绑定: VBA开发人员的基本指南文章中阅读更多有关这方面的内容。

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

https://stackoverflow.com/questions/71956769

复制
相关文章

相似问题

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