excel - Excel 范围粘贴在电子邮件正文的中心
问题描述
使用以下编码,我可以在带有签名的 Outlook 电子邮件中复制范围和过去。一切正常。我唯一想做的就是反映电子邮件正文中心的范围。请协助我如何在电子邮件正文的中心反映数据。
Dim OutApp As Object
Dim OutMail As Object
Dim rng As Range
Set rng = Nothing
Set rng = ThisWorkbook.Sheets("Output").Range("D7:E18")
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
With OutMail
.To = ""
.BCC = ""
.Subject = "Subject"
.Display
Dim wdDoc As Object
Dim wdRange As Object
Set wdDoc = OutMail.GetInspector.WordEditor
Set wdRange = wdDoc.Range(0, 0)
wdRange.InsertAfter vbCrLf & vbCrLf
rng.Copy
wdRange.Paste
Set OutMail = Nothing
Set OutApp = Nothing
End With
解决方案
代码的作用是,它不仅将文本居中,而且将粘贴在 Outlook 正文中的表格(Excel 范围)居中。
Option Explicit
Const wdAlignRowCenter As Integer = 1
Const wdAlignParagraphCenter As Integer = 1
Sub Sample()
Dim OutApp As Object, OutMail As Object
Dim wdDoc As Object, wdRange As Object
Dim rng As Range
Dim i As Long
Set rng = ThisWorkbook.Sheets("Output").Range("D7:E18")
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
With OutMail
.To = ""
.BCC = ""
.Subject = "Subject"
.Display
Set wdDoc = .GetInspector.WordEditor
Set wdRange = wdDoc.Range(0, 0)
wdRange.InsertAfter vbCrLf & vbCrLf
rng.Copy
wdRange.Paste
DoEvents
Set wdRange = wdDoc.Range(0, wdDoc.Characters.Count)
wdRange.ParagraphFormat.Alignment = wdAlignParagraphCenter
For i = 1 To wdRange.Tables.Count
wdRange.Tables(i).Rows.Alignment = wdAlignRowCenter
Next i
End With
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
注意:
- 如果默认编辑器不是 MS Word,顺便说一句
Set wdDoc = .GetInspector.WordEditor
会给你错误... - 如果您的身体中有图像,那么您可能还需要单独处理它们
推荐阅读
- javascript - 哪种设计模式可以很好地接收来自不同前端的出价到 javascript 中的单个后端
- arrays - 在不创建新数组的情况下替换数组中元素的值
- ruby-on-rails - 在 Rails 中通过 Ruby GraphQL 使用变量
- python - 熊猫:从列中获取值
- javascript - 如何更改元素的类 HTML JavaScript
- python - 如何在 Python 中将 .mat Matlab 文件转换为 .csv?
- javascript - 替换脚本标签中的 src 路径
- c# - 执行 Polly 策略时如何包含 return 语句?
- indexing - 列表索引超出范围_UNET
- java - 从命令行运行 junit 测试用例应用程序会导致初始化错误