ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 4945|回复: 6

[求助]请高手帮忙讲解一下CreateItem这个怎么用?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2008-10-2 10:13 | 显示全部楼层 |阅读模式

从本论坛上看到过自动创建邮件的代码:

Dim MItem As Object

Set MItem = OutlookApp.CreateItem(0)
      With MItem
        .To =  '比较好理解 邮件地址
        .Subject =   '标题
        .Body = '信件的主体了,我的问题也在这里,下面详细说明。
        .Display  '显示创建的邮件

原来的宏里面Body属性是被赋了文本值。我想问的是,这里面可以用表格么?

小弟对程序啊过程啊什么的一头雾水,只知道学习各位高手的例子。下面有几条思路,不知道对不对头?

1、是否本身这个.Body后面可以跟很多语句,把ActiveDocument.Tables.Add这样的语句哪呢个加进去?貌似可能性不大,但是如果能加,我的问题就解决啦,希望高手们赐教如何加。
2、Body可以是个Word文档,我先用宏创建个Word文档,把表格加进去,再传递给Body。这样不会被当做附件来处理吧?可行么?如果可行怎样创建这个Word文档呢?

3、文本,也就是字符串。字符串可以赋值给变量,用变量传递给Body本来也是这段代码的原来用法,那么有没有这样特殊的字符串,可以包含表格?如果有,请各位大哥大姐帮忙写一下。

以上是我的三个胡思乱想,但我对各种语句简直没有一丁点儿熟悉,所有知道的都是通过录制宏来发现。。。。

这段代码将是我的VBA中最最重要的一段,恳请各位不吝赐教。

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-10-2 17:34 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2008-11-17 23:09 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
同问同问。
请问如果要讲excel的某个range的表格导入outlook的mailitem里可以怎么做呢?
谢谢大家帮忙

TA的精华主题

TA的得分主题

发表于 2008-11-18 21:05 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2008-11-19 13:42 | 显示全部楼层
请参考帮助
Sub CreateHTMLMail()
'Creates a new e-mail item and modifies its properties.

    Dim olApp As Outlook.Application
    Dim objMail As Outlook.MailItem
    Set olApp = Outlook.Application
    'Create e-mail item
    Set objMail = olApp.CreateItem(olMailItem)

    With objMail
       'Set body format to HTML
       .BodyFormat = olFormatHTML
       .HTMLBody = "<HTML><H2>The body of this message will appear in HTML.</H2><BODY>Enter the message text here. </BODY></HTML>"
       .Display
    End With
End Sub

对于HTML里如何体现表格等,你自己再搜索搜索吧,可以拿一个有table的网页,然后查看它的源代码,看看里面怎么显示的。我对这块不熟。

TA的精华主题

TA的得分主题

发表于 2019-5-21 23:00 | 显示全部楼层
Option Explicit
Sub SendMailEnvelope_3()  '引用Outlook对象使用CreateItem属性实现邮件群发
Dim d As Object, outApp As Object, arr As Variant, brr As Variant, kr As Variant, i%, l%, j%, k%, x%
Dim tmp$, tmpstr$, r As Variant
Set d = CreateObject("scripting.dictionary") 'set字典
Set outApp = CreateObject("outlook.application")  'set outlook
arr = Sheets("工资表").UsedRange '总表的数据区域
For i = 2 To UBound(arr) '遍历数组arr
    If Not d.exists(arr(i, 1)) Then
        d(arr(i, 1)) = i '字典中不存在关键词则将行号装入字典
    Else
        d(arr(i, 1)) = d(arr(i, 1)) & "," & i '如果存在则合并行号,以逗号间隔
    End If
Next
kr = d.keys '字典的key集
Application.ScreenUpdating = False '关闭屏幕刷新
For i = 0 To UBound(kr) '遍历字典key值
    r = Split(d(kr(i)), ",") '取出item里储存的行号
    ReDim brr(1 To UBound(r) + 1, 1 To 8)
    k = 0
    For x = 0 To UBound(r)
        k = k + 1
        For j = 2 To 9 '读取遍历列
            brr(k, j - 1) = arr(r(x), j)
        Next j
    Next x
    Sheets("模板").Activate
    [a2] = arr(r(x - 1), 2)
    [b6].Resize(UBound(r) + 1, 8) = brr
    With outApp.createitem(olmailitem)   '如反馈olMailItem未找到工程或库,需在工具→引用→"Microsoft Outlook"
            .To = kr(i)     '------------收件人
            .Subject = "测试邮件" '------------主题
            .Body = Sheets("模板").UsedRange
            .Send              '------------发送邮件
    End With
Next i
Application.ScreenUpdating = True '恢复屏幕更新
Set d = Nothing '释放字典
Set outApp = Nothing
MsgBox "共发送" & i & "封邮件!"
End Sub


同问,Body后面可以为单元格区域吗?测试了下好像不行,不知有没有替代方案。

TA的精华主题

TA的得分主题

发表于 2019-5-22 12:27 | 显示全部楼层
libaoshui 发表于 2019-5-21 23:00
Option Explicit
Sub SendMailEnvelope_3()  '引用Outlook对象使用CreateItem属性实现邮件群发
Dim d As  ...

不行  body 接收的是字符串  如果是单元格的,遍历单元格吧
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-3-29 14:32 , Processed in 0.043416 second(s), 9 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表