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

时间:2016-06-19 00:35:13

标签: vba excel-vba compiler-errors outlook-vba excel

所以,我是VBA的初学者,但是我试图创建一种简单的方法来向一群人发送提醒消息,这些人的信息可以在excel电子表格中找到。它应该循环,将电子邮件发送到列中找到的地址,直到有一个空单元格。

我一直在以*开头的行上收到错误Object does not support this property or method。我花了最后一小时试图找出出现此错误的原因,因为Workbooks的属性SheetsCells返回值。

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 = "potapeno@foo.net"
        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

我也试过"激活"工作簿,但它无法解决我的问题。我无法弄清楚哪些对象不支持哪种方法。

1 个答案:

答案 0 :(得分:4)

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)