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 = "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

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

最佳答案

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/

相关文章:

java - 使用Apache POI从java中的excel表中读取数据

excel 2003 vba ..写arraylist

excel - `WEEKDAY` 函数给出了错误的值?

vba - Excel 2013 VBA 按排名排序

用于读取用户的 Outlook 日历详细信息的 Java 程序

Excel COUNTIFS 计算日期范围内的月份

php - Excel 中的用户导出在 Moodle 中损坏

vba - Excel 使用列表对列重新排序

java - 尝试使用 MAPI 从 MS 交换服务器读取帐户的收件箱

scripting - 如何使用Powershell监视命令的特定收件箱?