문제

나는 데 아주 이상한 문제와 이 코드입니다.일반적인 저장 사용자가 양식에서 데이터에 액세스하는 스프레드시트에서 Excel,다음 사용하는 전자 메일 클라이언트로 보내는 이메일을 포함하는 스프레드시트로 첨부합니다.이 코드는 다음과 같습니다

    Private Sub Send_Email_Click()

Dim MySheetPath As String
Dim Xl As Excel.Application
Dim XlBook As Excel.Workbook
Dim XlSheet As Excel.Worksheet

' Tell it location of actual Excel file
MySheetPath = "\\SERVER\Users\Public\Documents\WORK ORDERS\Blank Work Order.xlsx"

'Open Excel and the workbook
Set Xl = CreateObject("Excel.Application")
Set XlBook = GetObject(MySheetPath)

'Make sure excel is visible on the screen
Xl.Visible = True
XlBook.Windows(1).Visible = True

'Define the sheet in the Workbook as XlSheet
Set XlSheet = XlBook.Worksheets(1)

'Insert values in the excel sheet starting at specified cell
XlSheet.Range("B6") = Jobnameonform.Value
XlSheet.Range("C7") = Companynameonform.Value
XlSheet.Range("C8") = Employeename.Value
XlSheet.Range("H7") = Jobnumberonform.Value
Xl.ActiveWorkbook.Save
Xl.ActiveWorkbook.Close
Xl.Quit

'in case something goes wrong
Set Xl = Nothing
Set XlBook = Nothing
Set XlSheet = Nothing

Dim cdomsg
Set cdomsg = CreateObject("CDO.message")
With cdomsg.Configuration.Fields
    .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 'NTLM method
    .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"
    .Item("http://schemas.microsoft.com/cdo/configuration/smptserverport") = 587
    .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
    .Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
    .Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60
    .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "matthewfeeney6@gmail.com"
    .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "REDACTED"
    .Update
End With
' build email parts
With cdomsg
    .To = "matthewfeeney6@gmail.com"
    .From = "matthewfeeney6@gmail.com"
    .Subject = "Test email"
    .TextBody = "Did you get the attachment?"
    .AddAttachment "\\SERVER\Users\Public\Documents\WORK ORDERS\Blank Work Order.xlsx"
    .Send
End With
Set cdomsg = Nothing

MsgBox "Completed"

End Sub

없이 라인입니다."AddAttachment..."코드는 정확하게 작품이 의도한 대로,마이너스를 보내에 첨부 파일은 물론이다.그러나,그와 함께 선을 얻을 런타임 오류 91,디버거와 함께 인용하는 라인"Xl.ActiveWorkbook.저장"으로 문제가 되는 코드입니다.또한,지 않고 코드를 수정하 excel 스프레드시트,간단한 이메일 부분을 작동하지 않은 첨부 파일 포함됩니다.누군가가 도움을 줄 수 있다면으로 통찰력을 왜 나는 이 오류는 매우 도움이 될 것입니다.사전에 감사합니다!

편집:다시 코드,그것은 지속적으로 충돌에서 Xl.ActiveWorkbook.저장 나는 그것을 생각했기 전에,그러나 내가 되어 있어야 합니다 잘못된

도움이 되었습니까?

해결책

당신은(당신이 생각하는)에 있는 저장하고 닫 통합 문서와 함께:

Xl.ActiveWorkbook.Save
Xl.ActiveWorkbook.Close

하지만 통합 문서를 사용하고 조작하는 XlBook:

Set XlBook = GetObject(MySheetPath)

는 경우에 당신을 저장하고 닫은"진짜"통합 문서 XlBook:

XlBook.Save
XlBook.Close

다음은 작업해야 합니다.

를 받는 이유류에서 Save 전화 아마미 Xl.ActiveWorkbook 체가 존재하지 않/null 또는 무언가이다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top