Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Outlook blank';至';某些计算机上Excel VBA中的字段_Vba_Excel_Email_Outlook - Fatal编程技术网

Outlook blank';至';某些计算机上Excel VBA中的字段

Outlook blank';至';某些计算机上Excel VBA中的字段,vba,excel,email,outlook,Vba,Excel,Email,Outlook,我们有一个Excel电子表格,用于为潜在客户创建报价。通过使用VBA,它可以生成PDF,并使用Outlook通过电子邮件发送给客户。它从用户填写客户详细信息的主工作表上的单元格中获取客户的电子邮件地址 几周前,它停止在Outlook的“收件人”字段中填写客户的电子邮件地址,尽管它已在主工作表中填写 当我们更改此电子表格上的任何内容(包括代码)时,我们会将其保存为新的“修订版”(保留所有以前的修订版)。回顾以前的修订版,我现在发现它们都不起作用。这很奇怪,就像他们以前肯定做过的那样。我正在使用Of

我们有一个Excel电子表格,用于为潜在客户创建报价。通过使用VBA,它可以生成PDF,并使用Outlook通过电子邮件发送给客户。它从用户填写客户详细信息的主工作表上的单元格中获取客户的电子邮件地址

几周前,它停止在Outlook的“收件人”字段中填写客户的电子邮件地址,尽管它已在主工作表中填写

当我们更改此电子表格上的任何内容(包括代码)时,我们会将其保存为新的“修订版”(保留所有以前的修订版)。回顾以前的修订版,我现在发现它们都不起作用。这很奇怪,就像他们以前肯定做过的那样。我正在使用Office 2016(虽然我不久前升级了,但这是最近的问题)。运行Office 2013的机器也无法工作。但是,运行Office2007的机器可以工作

关于为什么现在这是一个问题,以及为什么它只是Office某些版本上的一个问题,有什么想法吗?以下是代码片段:

    Private Sub send_as_pdf_Click()
    On Error GoTo ErrMsg
    Dim strPath As String, strFName As String
    Dim OutApp As Object, OutMail As Object

    strPath = Environ$("temp") & "\"

    strFName = Sheets("Quotation").Name & " " & Range("G18") & ".pdf"

    Sheets("Quotation").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        strPath & strFName, Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

    strPath2 = Environ$("temp") & "\"

    strFName2 = Sheets("Quotation Offer Letter").Name & " " & Range("G18") & ".pdf"

    Sheets("Quotation Offer Letter").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        strPath2 & strFName2, Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

    strPath3 = Environ$("temp") & "\"

    strFName3 = Sheets("Additional Works Required").Name & " " & Range("G18") & ".pdf"

    Sheets("Additional Works Required").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        strPath3 & strFName3, Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)

    strbody = "<p style='color:#2C3E50;font-family:Calibri;font-size:11pt;'>Hi " & Range("C9") & ",</p>"

    strbody2 = "<p style='color:#2C3E50;font-family:Calibri;font-size:11pt;'>The content of the email goes here.</p>"

    On Error Resume Next
    With OutMail
        .Display
        .To = Range("C19")
        .CC = ""
        .BCC = "first@person.com" & ";" & "second@person.com" & ";" & Range("I6") & ";"
        .Subject = "Quotation"
        .HTMLBody = strbody & strbody2 & .HTMLBody
        .Attachments.Add strPath & strFName
        .Attachments.Add strPath2 & strFName2
        .Attachments.Add strPath3 & strFName3
        .Attachments.Add ("C:\Terms and Conditions of Business of Our Business.pdf")
        .Attachments.Add ("C:\Warranty Statement of Our Business.pdf")
    End With

    Kill strPath & strFName
    On Error GoTo 0
    Set OutMail = Nothing
    Set OutApp = Nothing
Exit Sub

ErrMsg:
MsgBox ("MUST enter Issue Number, Date & Customer Info."), , "Customer Email Error Message"

End Sub
Private Sub-send\u as\u pdf\u Click()
关于错误转到ErrMsg
Dim strPath作为字符串,strFName作为字符串
Dim OutApp作为对象,OutMail作为对象
strPath=Environ$(“temp”)和“\”
strFName=图纸(“报价单”)。名称和范围(“G18”)和“.pdf”
工作表(“报价”)。ExportAsFixedFormat类型:=xlTypePDF,文件名:=_
strPath和strFName,质量:=xlQualityStandard_
IncludeDocProperties:=True,IgnorePrintAreas:=False,OpenAfterPublish:=False
strPath2=Environ$(“temp”)和“\”
strFName2=表格(“报价邀请函”)。名称和范围(“G18”)和.pdf
工作表(“报价邀请函”)。ExportAsFixedFormat类型:=xlTypePDF,文件名:=_
strPath2和strFName2,质量:=xlQualityStandard_
IncludeDocProperties:=True,IgnorePrintAreas:=False,OpenAfterPublish:=False
strPath3=Environ$(“temp”)和“\”
strFName3=图纸(“需要额外工程”)。名称和范围(“G18”)和.pdf
工作表(“需要额外工作”)。ExportAsFixedFormat类型:=xlTypePDF,文件名:=_
strPath3和strFName3,质量:=xlQualityStandard_
IncludeDocProperties:=True,IgnorePrintAreas:=False,OpenAfterPublish:=False
Set-OutApp=CreateObject(“Outlook.Application”)
Set-OutMail=OutApp.CreateItem(0)
strbody=“

Hi”&Range(“C9”)和“,

” strbody2=“

完成此操作后,您应该能够看到行中的错误:

.To = Range("C19")

在excel中,它返回范围的值,但是您将该值发送到另一个应用程序
Outlook
,该应用程序需要字符串

我把那句话改成:

.To = Range("C19").Value2

它成功了

所有其他字段都在填充,好吗?这只是
To
字段?您可能希望引用您正在使用的工作表的范围,即
.To=工作表(“工作表名称”)。范围(“C19”)
;)@ScottHoltzman Yes-客户的名字在电子邮件正文中正确填充,第三个密件抄送电子邮件地址正确填充(这将根据创建报价单的人而改变)。只是“收件人”字段。@R3uK不幸的是,这不起作用。然而,我不认为你需要参考工作表,如果它是活动的。不管怎样,上面的代码直到最近还在运行。它目前也可以在其他一些机器上工作。@adamcwhite:事实上,它隐式地在活动工作表上!不过,通常最好完全参考一个范围。我看不到任何其他可能导致问题的东西。。。您是否尝试在工作机器和非工作机器之间使用
Debug.Print
比较数据?这适用于所有机器。我仍然不确定为什么这个问题最近才出现。非常感谢你!