2012-09-26 34 views
-1

我想爲outlook創建一個宏。用outlook message VB/VBA中的數據填寫web表單

我需要提取選定的電子郵件主題,行和身體,並預先填充網站上的3個文本字段與該數據。

我已經URL做到這一點(網站/ form.php的?name = XXX &主題= XXX &消息= XXXX)

要麼

  1. 宏從選擇中提取3場消息並建立預填充的鏈接以發送用戶。

  2. 宏登錄到所述站點並填寫表單上的數據。

+0

我不明白這個問題。請儘量保持問題的簡短和重點 - 可能首先通過[常見問題](http://stackoverflow.com/faq#howtoask)滾動? –

+0

您好,感謝您的輸入,我簡化了我的問題,希望我能得到讚賞! –

+0

「我想爲Outlook創建一個宏」 - 什麼阻止你這麼做?什麼**確實**你有問題嗎? –

回答

0

我發現了!

http://developers.phpjunkyard.com/viewtopic.php?f=13&t=4241

你會在那裏找到我的代碼。

Sub HelpdeskNewTicket() 
Dim helpdeskaddress As String 
Dim objMail As Outlook.MailItem 
Dim strbody As String 
Dim oldmsg As String 
Dim senderaddress As String 
Dim addresstype As Integer 
Dim ie   As Object 
Dim sResult As String 
Dim dtTimer As Date 
Dim lAddTime As Long 


Set objItem = GetCurrentItem() 


' Sender E=mail Address 
senderaddress = objItem.SenderEmailAddress 

'Searches for @ in the email address to determine if it is an exchange user 
addresstype = InStr(senderaddress, "@") 

' If the address is an Exchange DN use the Senders Name 
If addresstype = 0 Then 
senderaddress = objItem.SenderName 
End If 


    Const sOVIDURL As String = "http://helpdesk.com/admin" 
    Const lREADYSTATE_COMPLETE As Long = 4 

     Set ie = CreateObject("InternetExplorer.Application") 
     ie.Visible = True 
     ie.navigate sOVIDURL 

     dtTimer = Now 
     lAddTime = TimeValue("00:00:20") 

     Do Until ie.readystate = lREADYSTATE_COMPLETE And Not ie.busy 
     DoEvents 
     If dtTimer + lAddTime > Now Then Exit Do 
     Loop 

     ie.document.getElementById("user").Value = "yourusername" 
     ie.document.getElementById("password").Value = "yourpassword" 
     ie.document.forms(0).submit 

     Do Until ie.readystate = lREADYSTATE_COMPLETE And Not ie.busy 
     DoEvents 
     If dtTimer + lAddTime > Now Then Exit Do 
     Loop 

     ie.navigate "http://helpdesk.com/admin/new_ticket.php" 

     Do Until ie.readystate = lREADYSTATE_COMPLETE And Not ie.busy 
     DoEvents 
     If dtTimer + lAddTime > Now Then Exit Do 
     Loop 

       While ie.busy 
      DoEvents 
     Wend 

     ie.document.getElementById("name").Value = objItem.SenderName 
     ie.document.getElementById("subject").Value = objItem.Subject 
     ie.document.getElementById("message").Value = objItem.Body 
     dtTimer = Now 
     lAddTime = TimeValue("00:00:20") 
    Set ie = Nothing ' If you want to close it. 


'Dim PageNumber As Object 


Set objItem = Nothing 
Set objMail = Nothing 
End Sub 

Function GetCurrentItem() As Object 
Dim objApp As Outlook.Application 
Set objApp = Application 
On Error Resume Next 
Select Case TypeName(objApp.ActiveWindow) 
Case "Explorer" 
Set GetCurrentItem = _ 
objApp.ActiveExplorer.Selection.Item(1) 
Case "Inspector" 
Set GetCurrentItem = _ 
objApp.ActiveInspector.currentItem 
Case Else 
End Select 
End Function