2017-05-23 4 views
0

私がやろうとしているのは、Outlookで簡単な追跡/発券システムを作成することです。私はOffice 2016を使用しています。私がしたいことは次のとおりです。着信Outlook 2016の電子メールにExcelシートを挿入し、チケット番号を追加して電子メールの件名を変更してください

新しい電子メールが届いたら、それが新しい電子メールか返信/ fwdかどうかを確認するExcelでマクロを開始します。新しい場合は、Excelシートで新しいエントリが作成され、チケット番号が割り当てられます。今、このチケット番号を電子メールの件名に追加して、送信者に自動返信します。

私はExcel vbaについていくつか考えていますが、私はOutlookの部分に苦労しています。適切な方向への助けや振る舞いに感謝します。私はオンラインチュートリアルからいくつかの情報を抽出しようとしましたが、少し失われてしまいました。助けてくれてありがとう!

答えて

0

ここは、あなたの見通しからメールの件名にアクセスするのに役立つコードです。コードを適用する前に、「Microsoft Outlook 15.0オブジェクトライブラリ」のリファレンスを追加することを忘れないでください。

あなたがする必要があるのは、件名にアクセスした後で、転送されたメールまたは返信されたメールを確認するために「FW:」または「RE:」で分割できます。あなたは非常に簡単でシンプルですPowerShellのコードを利用することができ、メールを送信するために

sub MailsImport() 

Dim Folder As Outlook.MAPIFolder 
Dim sFolders As Outlook.MAPIFolder 
Dim iRow As Integer, oRow As Integer 
Dim MailBoxName As String, Pst_Folder_Name As String 
Dim ProfileName As String 

ProfileName = "Enter the outlook profile mail address" 'Ex: [email protected] 

'Mailbox or PST Main Folder Name (As how it is displayed in your Outlook Session) 
MailBoxName = ProfileName 

'Mailbox Folder or PST Folder Name (As how it is displayed in your Outlook Session) 
Pst_Folder_Name = "Enter the folder name in your outlook profile" 'Example: "Inbox" or "Sent Items" 

'To directly a Folder at a high level 
'Set Folder = Outlook.Session.Folders(MailBoxName).Folders(Pst_Folder_Name) 

'To access a main folder or a subfolder (level-1) 
For Each Folder In Outlook.Session.Folders(MailBoxName).Folders 
    If VBA.UCase(Folder.Name) = VBA.UCase(Pst_Folder_Name) Then GoTo Label_Folder_Found 
    For Each sFolders In Folder.Folders 
     If VBA.UCase(sFolders.Name) = VBA.UCase(Pst_Folder_Name) Then 
      Set Folder = sFolders 
      GoTo Label_Folder_Found 
     End If 
    Next sFolders 
Next Folder 

Label_Folder_Found: 
If Folder.Name = "" Then 
    MsgBox "Invalid Data in Input" 
    GoTo End_Lbl1: 
End If 

'Read Through each Mail and export the details to Excel for Email Archival 
ThisWorkbook.Sheets(1).Activate 
Folder.Items.Sort "Received" 

'Insert Column Headers 
'ThisWorkbook.Sheets(1).Cells(1, 1) = "Sender" 
ThisWorkbook.Sheets(1).Cells(1, 2) = "Subject" 
'ThisWorkbook.Sheets(1).Cells(1, 3) = "Date" 
'ThisWorkbook.Sheets(1).Cells(1, 4) = "Size" 
'ThisWorkbook.Sheets(1).Cells(1, 5) = "EmailID" 
'ThisWorkbook.Sheets(1).Cells(1, 1) = "Body" 

'Export eMail Data from PST Folder to Excel with date and time 
oRow = 1 
For iRow = 1 To Folder.Items.Count 
    'If condition to import mails received in last 60 days 
    'To import all emails, comment or remove this IF condition 
    If VBA.DateValue(VBA.Now) - VBA.DateValue(Folder.Items.Item(iRow).ReceivedTime) <= 60 Then 
     oRow = oRow + 1 
     ThisWorkbook.Sheets(1).Cells(oRow, 1).Select 
     'ThisWorkbook.Sheets(1).Cells(oRow, 1) = Folder.Items.Item(iRow).SenderName 
     ThisWorkbook.Sheets(1).Cells(oRow, 2) = Folder.Items.Item(iRow).Subject 
     'ThisWorkbook.Sheets(1).Cells(oRow, 3) = Folder.Items.Item(iRow).ReceivedTime 
     'ThisWorkbook.Sheets(1).Cells(oRow, 4) = Folder.Items.Item(iRow).Size 
     'ThisWorkbook.Sheets(1).Cells(oRow, 5) = Folder.Items.Item(iRow).SenderEmailAddress 
     'ThisWorkbook.Sheets(1).Cells(oRow, 1) = Folder.Items.Item(iRow).Body 
    End If 
Next iRow 
Set Folder = Nothing 
Set sFolders = Nothing 
End_Lbl1: 
End sub 

$SmtpClient = new-object system.net.mail.smtpClient 
$MailMessage = New-Object system.net.mail.mailmessage 
$SmtpServer = "your smtp servername" #Ex: mail1.hotmail.com 
$SmtpClient.host = $SmtpServer 
$MailMessage.From = "Your mail id" #Ex: [email protected] 
$MailMessage.To.add("Mail id of the recipient") 
$MailMessage.Subject = "subject line for your mail" 
$MailMessage.IsBodyHtml = 0 

$MailMessage.Body = "//body of the mail 
//body 
//body 
//body 
//body" 
$SmtpClient.Send($MailMessage) 
関連する問題