Excel->;Outlook VBA:根据数据模型创建的电子邮件透视表

Excel->;Outlook VBA:根据数据模型创建的电子邮件透视表,excel,vba,outlook,Excel,Vba,Outlook,我真的以为我能自己解决这个问题 我每天早上都有很多工作报告 这些报告是从数据模型创建的两个透视表的组合 (他们有日期和团队的过滤器,每天表格的大小都不同) 我想按下一个按钮,让Excel将这两个数据透视表复制到Outlook电子邮件中,然后发送出去 我可以让Excel选择一个数据透视表,将其复制到剪贴板,打开新的Outlook电子邮件,填写“收件人:抄送:”和“主题”字段,但我无法让它粘贴任何内容--我甚至无法让它选择多个数据透视表进行复制 --我尝试过的事情:--- 其中包含一些非常好的代码

我真的以为我能自己解决这个问题

我每天早上都有很多工作报告
这些报告是从数据模型创建的两个透视表的组合
(他们有日期和团队的过滤器,每天表格的大小都不同)

我想按下一个按钮,让Excel将这两个数据透视表复制到Outlook电子邮件中,然后发送出去

我可以让Excel选择一个数据透视表,将其复制到剪贴板,打开新的Outlook电子邮件,填写“收件人:抄送:”和“主题”字段,但我无法让它粘贴任何内容--我甚至无法让它选择多个数据透视表进行复制

--我尝试过的事情:---

  • 其中包含一些非常好的代码,但它不选择透视表。我将部分代码调整为
    Set PvtTbl=Worksheets(“Sheet1”)。数据透视表(“数据透视表1”)
    ,但它不会将数据透视表粘贴到Outlook电子邮件中

  • -当我尝试此操作时,会出现错误:“ByRef参数类型不匹配”。我假设这是因为函数希望接受一个范围,而透视表的选择不是一个范围

我试着把
.HTMLBody=rng
放进去,希望能做点什么,但所做的只是将数据透视表名称(数据透视表1)粘贴到主体中

因此,我尝试寻找如何使用VBA将数据透视表转换为一个范围。可方便地了解.TableRange1,尽管将
.HTMLBody=rng.TableRange1

或将rng定义为
Set rng=工作表(“表1”)。数据透视表(“数据透视表1”)。表范围1

仅显示错误“类型不匹配”

  • ,但如果我
    Set rng=Worksheets(“Sheet1”).Range.PivotTables(“PivotTable1”)
    则会出现错误“参数数量错误或属性分配无效”

  • ,但它有一个固定的范围

  • ,但它开始复制到新工作簿,然后在将其放入Outlook之前创建一个.html文件。这看起来太复杂了,我希望在走到这一步之前能有一个更优雅的解决方案

  • 我试着录制宏、选择透视表、复制、粘贴到Outlook。它给了我这个:
    ActiveSheet.PivotTables(“PivotTable1”).PivotSelect“”,xlDataAndLabel,True

    选择。复制

    所以当我这样做时:
    .HTMLBody=ActiveSheet.PivotTables(“DVS1”).PivotSelect“”,xlDataAndLabel,True
    我得到了错误“Expected:end of statement”,它在上面突出显示了

  • 我尝试修改
    。选择
    rng的名称。选择
    设置rng=工作表(“Sheet1”)。数据透视表(“PivotTable1”)。根据建议选择
    ,但我得到错误:“对象不支持此属性或方法”

我不记得它在哪一页,但有人提到他们的代码对使用数据模型创建的透视表不起作用,但是他提到桌子的大小永远不会改变(所以这对我不起作用)

这就是我现在的处境,伙计们。我做这件事已经有几天了,我的想法都快用完了——所以我希望你们能帮我解决,或者至少给我指出正确的方向

提前感谢:)