我的邮箱客户端是foxmail,(VBA)
我希望在使用完excel的工作簿后,点击一个按钮后,把此文件作为附件,并在发送地址处自动填充接受方地址?如果我使用OutExpress,则程序调用OE,如果我使用Foxmail,则foxmail启动。
希望程序不是很长!!!1

解决方案 »

  1.   

    you can use mapi ,to send mail
    http://search.csdn.net/Expert/topic/555/555798.xml?temp=6.335086E-02
      

  2.   

    Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
    Private Sub Command1_Click()    Call ShellExecute(Me.hwnd, "Open", "mailto:[email protected]&subject=MySubject&body=haha", "", App.Path, 1)End Sub
      

  3.   

    虫子的解答在excel中不能使用,而kingzai的解答不是符合我的要求,我是说,此excel文件是很多人使用的,使用后,点击一个excel上的按钮,程序就会调用默认的邮箱(我也不知道对方默认使用的是OE还是Foxmail,使用者平时使用什么邮箱客户端,此时就调用哪一个),并把此excel文件作为附件,在发送栏填写接受地址,此时使用者就可以判定是否要发送此信件了,而不需要多设置。
    注意:是在excel中实现的
      

  4.   

    在excel中实现??
    那只能用外挂
      

  5.   

    楼上
    直接用mailto系统能自己去找默认客户端吗?
      

  6.   

    mailto:[email protected]就可以嘿嘿真好玩
      

  7.   

    Public Const SW_NORMAL = 1
    Public Const SW_MINIMIZE = 6
    Public Const HKEY_CURRENT_USER = &H80000001
    Public Const KEY_QUERY_VALUE = &H1
    Public Const REG_SZ = 1                         ' Unicode nul terminated stringPublic Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long
    Public Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long         ' Note that if you declare the lpData parameter as String, you must pass it By Value.
    Public Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
    Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As LongSub Foxmail()
    '
        On Error Resume Next
    'HKEY_CURRENT_USER\Software\Aerofox\FoxMail\V3.1
    'FoxMailPath
        Dim hKey As Long
        Dim tmpStr As String * 255
        Dim PathLen As Long
        
        If RegOpenKeyEx(HKEY_CURRENT_USER, "Software\Aerofox\FoxMail\", 0, KEY_QUERY_VALUE, hKey) <> 0 Then
          Exit Sub
        End If
        PathLen = Len(tmpStr)
        If RegQueryValueEx(hKey, "FoxmailPath", 0, REG_SZ, ByVal tmpStr, PathLen) <> 0 Then
          Exit Sub
          RegCloseKey hKey
        End If
        RegCloseKey hKey
        FoxmailPath = Trim(Left(tmpStr, PathLen))    ActiveDocument.Save
        If (ActiveDocument.Path <> "") And (ActiveDocument.FullName <> "") Then
          ShellExecute 0, "Open", FoxmailPath, """" & ActiveDocument.FullName & """", "", SW_NORMAL
        End If
    End Sub以上是Foxmail的内置的一段word的宏,Excel可以模仿一下
      

  8.   

    Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
    ' 调用系统默认邮件程序向指定邮箱地址发送邮件
    ' Address 为收件人的邮箱地址, CopyTo 为抄送地址, Subject 为邮件主题, MailText 为邮件正文
    Function SendMail(ByVal Address As String, Optional ByVal CopyTo As String, Optional ByVal Subject As String, Optional ByVal MailText As String) As Boolean
        SendMail = ShellExecute(0, "open", "mailto:" & Address & "?" & "&CC=" & CopyTo & "&Subject=" & Subject & "&Body=" & MailText, vbNullString, vbNullString, 5)
    End Function