2016-06-27 5 views
0

안녕하십니까,Create는 IBM Notes를 사용하여 편지 병합을 수행합니다.

excel의 열을 기반으로 IBM Notes에서 전자 메일 우편함을 만들 수있는 몇 가지 코드가 있습니다. 내가 만나는 문제는 열 A의 각 전자 메일 주소에 대해 별도의 전자 메일을 만들고 싶습니다. 또한 각받는 사람에 대해 특정 파일을 첨부하는 방법을 알아낼 수 없으며 파일의 위치는 C 열에 포함됩니다. 누구든지 나를 도울 수 있습니까?

Sub SendQuoteToEmail() 

Dim NSession As Object 
Dim NDatabase As Object 
Dim NUIWorkSpace As Object 
Dim NDoc As Object 
Dim NUIdoc As Object 
Dim WordApp As Object 
Dim subject As String 
Dim EmailAddress As Variant 

subject = Worksheets("Sheet1").Range("B2") 
Debug.Print subject 

Set NSession = CreateObject("Notes.NotesSession") 
Set NUIWorkSpace = CreateObject("Notes.NotesUIWorkspace") 
Set NDatabase = NSession.GetDatabase("", "") 
If Not NDatabase.IsOpen Then NDatabase.OPENMAIL 

For all Emai-Addresses 
EmailAddress =      Worksheets("Sheet1").Application.Transpose(Range("A2").Resize(Range("A" &       Rows.Count).End(xlUp).Row).Value) 
Set NDoc = NDatabase.CreateDocument 

With NDoc 
    .Form = "Memo" ' or .ReplaceItemValue("Form", "Memo") 
    .SendTo = EmailAddress 
    .subject = subject 
End With 
Set rtitem = NDoc.CreateRichTextItem("Body") 
Call rt.AppendText(Worksheets("sheet1").Range("d2") & vbLf & vbLf) 
Call rt.EmbedObject(1454, "", "c:filepath.doc") 
Call NDoc.Save(True, False) 
Next ' email-address 
Set NDoc = NDatabase.CreateDocument 

With NDoc 
.SendTo = EmailAddress 
'.CopyTo = "" 
.subject = subject 

.body = Worksheets("sheet1").Range("d2") & vbLf & vbLf 


.Save True, False 
End With 

Set NUIdoc = NUIWorkSpace.EDITDocument(True, NDoc) 
With NUIdoc 

Set WordApp = Nothing 
End With 

Set NSession = Nothing 
End Sub 

답변

0

파일을 첨부하려면 NotesRichTextItem 클래스의 EmbedObject 메소드를 살펴보십시오.

코드에 몇 가지 다른 문제가 있습니다. 값을 필드에 할당 할 때 확장 표기법을 사용하면 안되며, NotesDocument 클래스의 ReplaceItemValue 메소드를 사용하여 값을 저장하십시오. 본문 필드는 서식있는 텍스트 필드이므로 해당 필드와 관련된 모든 것에 대해 NotesRichTextItem 클래스를 사용해야하므로 Appendtext 및 AddNewLine 메서드를 사용하여 내용을 필드에 씁니다. 또한 위에서 언급 한 EmbeddObject 메서드를 사용하여 파일을 첨부 할 수 있습니다.

아마도 내 메일 알림 클래스에서 유용한 힌트를 찾을 수 있습니다. 난 그냥 http://blog.texasswede.com/updated-mailnotification-class-now-with-html-email-support-and-web-links/

희망은 도움에 업데이트 된 버전을 게시!

+0

내가 Domino가 설치되어 있지 않습니다. 이 문제가 발생합니까? 내가 뭘하려해도 파일을 첨부 할 수없는 것 같습니다. – DHuber

0

이 노트에서 메일을 작성하기위한 코드의 관련성 부분을 보인다 send email to a specific Lotus Notes contacts using VBA

당신이 당신의 메일을 당신이 그들을 보내기 전에 화면에 열려, 또는 그들이 보이지 않는 보낼 수 있습니다 하시겠습니까?

UPDATE : 제안

subject = Worksheets("Sheet1").Range("B2") 
Debug.Print subject 

Set NSession = CreateObject("Notes.NotesSession") 
Set NUIWorkSpace = CreateObject("Notes.NotesUIWorkspace") 
Set NDatabase = NSession.GetDatabase("", "") 
If Not NDatabase.IsOpen Then NDatabase.OPENMAIL 

For all email-addresses 
    EmailAddress = Worksheets("Sheet1").Application.Transpose(Range("A2").Resize(Range("A" & Rows.Count).End(xlUp).Row).Value) 
    Set NDoc = NDatabase.CreateDocument 

    With NDoc 
     .Form= "Memo" ' or .ReplaceItemValue("Form", "Memo") 
     .SendTo = EmailAddress 
     .subject = subject 
    End With 
    set rtitem= NDoc.CreateRichTextItem("Body") 
    Call rt.AppendText(Worksheets("sheet1").Range("d2") & vbLf & vbLf) 
    Call rt.EmbedObject(1454, "", "c:filepath.doc") 
    Call NDoc.Save(True, False) 
Next ' email-address 

가 처리 할 코드 : 반복, 파일 이름, 주소 ...

+0

처음에는 민감한 정보를 발송할 때 화면이나 초안 폴더에서 열어보고 싶습니다. 올바른 공급 업체에 올바른 첨부 파일을 보내고 있는지 확인하고 싶습니다. – DHuber

+0

Lotus Notes Domino 또는 Print Merger가 없기 때문에 회사 전자 메일 계정이기 때문에 언급해야합니다. 왜 이런 식으로해야합니까? 나는 코더가 아니지만 나는 VBA를 시도 할 수있는 유일한 사람입니다. 그래서 나는 훈련없이 최선을 다하고 있습니다. – DHuber

+0

실제로 하나의 메일을 화면에서 열 수 있습니다. 두 개 또는 세 개를 동시에 열 수는 있지만 100 개의 메일을 보낼 때 실제로는 불가능합니다. 따라서 하나씩 만들고 보여주고 승인해야합니다. 초안으로 저장하면 더 좋은 방법 일 수 있습니다. 나는 내 대답을 수정했다. –