所以,我是 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 使用对象浏览器探索方法和属性。输入类名并按搜索按钮:
要获取某个 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/