所以,我是VBA的初学者,但是我试图创建一种简单的方法来向一群人发送提醒消息,这些人的信息可以在excel电子表格中找到。它应该循环,将电子邮件发送到列中找到的地址,直到有一个空单元格。
我一直在以*开头的行上收到错误Object does not support this property or method
。我花了最后一小时试图找出出现此错误的原因,因为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
我也试过"激活"工作簿,但它无法解决我的问题。我无法弄清楚哪些对象不支持哪种方法。
答案 0 :(得分:4)
wb.Sheets
是一个集合,并且没有.Cells
属性。您可以使用对象浏览器在VBA项目中按 F2 来探索方法和属性。输入班级名称,然后按“搜索”按钮:
要获取某个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)