Visual Basic 中的最大数据类型 excel vba 字符串失败

biggest data type in visual basic excel vba string failing

使用 excel 在 outlook 上发送邮件 vba

我正在发送一个带有 excel 宏的 html 但字符串无法加载 it.Even HTML 文件的总数几乎是 200kb 现在我正在使用,我知道它很大,但现在 100kb 或 200kb 没那么多了。

同时列也有它可以携带的数据的限制,我寻找 cdo 它不会工作,因为它需要

https://intaxing.in/mail。但是好像字符串有发送消息的限制,一半失败,只发送一半。

我只是附上一些代码供参考浪费时间是间隔的机制。

Public subject As String
Public ToEmailID As String
Public EmailBody As String
Public ToName As String
Public display As String



Private Sub CommandButton1_Click()
Dim i As Integer, j As String, timy As Date, head As String, base64 As String


timy = ActiveSheet.Range("m2")
j = ActiveSheet.Range("l2").Text
i = ActiveSheet.Range("n2").Text
j = i + j
EmailBody = ActiveSheet.Range("k2")
subject = ActiveSheet.Range("j2").Text
For i = i To j
        ToEmailID = ActiveSheet.Cells(i, 2).Text
        Call SendEmailUsingOutlook(subject, ToEmailID, EmailBody)
        WasteTime (i)
Next i
End Sub


Sub SendEmailUsingOutlook(subject As String, ToEmailID As String, EmailBody As String)
    
    
'For Tips see: http://www.rondebruin.nl/win/winmail/Outlook/tips.htm
'Working in Office 2000-2016
    Dim OutApp As Object
    Dim OutMail As Object
    Dim strbody As String

    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)

    On Error Resume Next
    With OutMail
        .To = ToEmailID
        .CC = ""
        .BCC = ""
        .HTMLBody = EmailBody
        Debug.Print EmailBody
        'You can add a file like this
        '.Attachments.Add ("C:\test.txt")
        .Send   'or use .Display
    End With
    On Error GoTo 0

    Set OutMail = Nothing
    Set OutApp = Nothing
    
End Sub

如您所知,一个工作表单元格限制为 32,767 个字符。因此,与其从工作表单元格中获取字符串,不如直接从文件中获取。

首先,添加以下程序...

Public Function GetDataFromFile(ByVal fullName As String) As String

    Dim data As String
    Dim fileNum As Long
    
    fileNum = FreeFile()
    
    Open fullName For Input As #fileNum
        data = Input(LOF(fileNum), fileNum)
    Close #fileNum
    
    GetDataFromFile = data
    
End Function

然后替换...

EmailBody = ActiveSheet.Range("k2")

EmailBody  = GetDataFromFile("c:\users\domenic\desktop\sample.html")

相应地更改路径和文件名。