excel - 对象项不支持此属性或方法

标签 excel vba outlook compiler-errors

所以,我是 VBA 的初学者,但我正在尝试创建一种简单的方法来向一群在 Excel 电子表格中找到信息的人发送提醒消息。它应该循环,将电子邮件发送到列中找到的地址,直到出现空单元格为止。

我在以 * 开头的行中不断收到错误对象不支持此属性或方法。我花了最后一个小时试图弄清楚为什么会出现此错误,因为 Workbooks 具有属性 Sheets ,其中包含返回值的 Cells

Sub Send_Reminder_Email()

    Dim objMsg As MailItem
    Set objMsg = Application.CreateItem(olMailItem)

    Dim xlApp As Object, wb As Object
    Dim row As Integer

    Set xlApp = CreateObject("Excel.Application")
    Set wb = xlApp.Workbooks.Open("C:\User\Me\...file.xls")
    row = 2

    *Do While Not IsEmpty(wb.Sheets.Cells(row, 2).Value)
        objMsg.To = wb.Sheets.Cells(row, 6)
        objMsg.BCC = "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="6b1b041f0a1b0e05042b0d040445050e1f" rel="noreferrer noopener nofollow">[email protected]</a>"
        objMsg.Subject = "Email"
        objMsg.Body = "Information"
        objMsg.Send
        row = row + 1
    Loop

    Set objMsg = Nothing
    Set wb = Nothing
    Set xlApp = Nothing
    row = 0

End Sub

我也尝试过“激活”工作簿,但未能解决我的问题。我无法弄清楚哪个对象不支持哪种方法。

最佳答案

wb.Sheets 是一个集合,没有 .Cells 属性。您可以在 VBA 项目中按 F2 使用对象浏览器探索方法和属性。输入类名并按搜索按钮:

Object Browser

要获取某个 Worksheet 对象,您必须指定工作表集合 e 的项目。 G。按工作表名称:

Do While Not IsEmpty(wb.Sheets.Item("Sheets1").Cells(row, 2).Value)

.Item() 是默认属性可能不太明显,但事实确实如此,因此您可以以简化形式调用它:

Do While Not IsEmpty(wb.Sheets("Sheets1").Cells(row, 2).Value)

或按工作表索引:

Do While Not IsEmpty(wb.Sheets(1).Cells(row, 2).Value)

关于excel - 对象项不支持此属性或方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37902884/

相关文章:

excel - 如何将数字四舍五入到最接近的十位?

excel - 在 Rows 集合上使用 For Each 时,将行值作为字符串复制到 Variant 中

excel - 对字母数字值进行排序

c# - 以编程方式过滤 Outlook 2010 加载项中的联系人

powershell - 通过Powershell在Outlook中的电子邮件计数

excel - 我可以使用 VBA 分配给 "with Outlook"的所有属性是什么?

excel - 验证下拉条件

java - 如何从 xls 文件生成 xml 或 json 映射,然后从该映射生成 html 表(结构)?

excel - 删除不同工作簿上的空行

excel - ADO 和 DAO 的区别