使用 Excel 单元格中的 .To 分配电子邮件地址:运行时错误“-2147417851 (80010105)”:服务器引发异常

问题描述 投票:0回答:1

我创建了一个工具来自动通过电子邮件发送所需数据。
数据位于一张表中,位置和电子邮件地址位于第二张表中。

Private Sub CommandButton1_Click()
Dim EmailApp As Object
Set EmailApp = CreateObject("Outlook.Application") 'Object for Outlook
Dim NewEmailItem As Object

For r = 2 To
    Worksheets("Receipant").Cells(Worksheets("Receipant").Rows.Count, Range("C2").Column).End(xlUp).Row
    FltrCrit1 = Sheets("Receipant").Cells(r, 3)
    Workbooks.Add
    ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & FltrCrit1 & ".xlsx"
    Set wbNewWorkbook = Workbooks.Open(ThisWorkbook.Path & "\" & FltrCrit1 & ".xlsx")
    ThisWorkbook.Activate
    ThisWorkbook.Sheets("Data").Select
    ActiveSheet.Range("$A$4:$p$" & ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row).AutoFilter Field:=1, Criteria1:=FltrCrit1
    ActiveSheet.Range("$A$4:$p$" & ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row).Select
    Selection.SpecialCells(xlCellTypeVisible).Select
    Selection.Copy
    wbNewWorkbook.Activate
    wbNewWorkbook.ActiveSheet.Paste
    wbNewWorkbook.Save
    wbNewWorkbook.Close
           
    Set NewEmailItem = EmailApp.CreateItem(0) 'Object for mail within Outlook
    NewEmailItem.To = Sheets("Receipant").Cells(r, 1)

在一些系统中

运行时错误'-2147417851 (80010105)':
自动化错误。
服务器抛出异常。

在第 20 行生成。

NewEmailItem.To = Sheets("Receipant").Cells(r, 1)

当我删除工作表引用并输入电子邮件地址文本时,它将执行。例如。

NewEmailItem.To = “[email protected]

为什么少数用户在使用相同的操作系统和 Office 版本时会遇到错误?

excel vba outlook
1个回答
0
投票

尝试更换

NewEmailItem.To = Sheets("Receipant").Cells(r, 1)

NewEmailItem.To = Sheets("Receipant").Cells(r, 1).Text
© www.soinside.com 2019 - 2024. All rights reserved.