我正在运行通过电子邮件分发的报告。电子邮件中有一个指向该报告的超链接,并从其中复制了一些单元格作为报告内容的快照。我正在尝试自动化并找到一些VBA,但我不是程序员,无法根据自己的需要对其进行修改。
下面的VBA为我提供了大部分帮助,但有两个缺点:
1)我需要超链接指向我在电子邮件中引用的特定文件,该文件每天都会更改(即创建一个唯一的工作簿)。下面使用静态超链接。我试图找出一种从单元格引用派生超链接的方法。
2)当从Excel将超链接和单元格范围复制到电子邮件中时,我需要超链接下方的单元格。下面将范围放在超链接上方。
我想保留下面的VBA中引用工作表以派生电子邮件的方法。在分发的其他报表上似乎很容易部署。
子CreateMail()
Dim rngSubject As Range
Dim rngTo As Range
Dim rngCc As Range
Dim rngBody As Range
Dim objOutlook As Object
Dim objMail As Object
Set objOutlook = CreateObject("Outlook.Application")
Set objMail = objOutlook.CreateItem(0)
With ActiveSheet
Set rngTo = .Range("B1")
Set rngCc = .Range("B3")
Set rngSubject = .Range("B2")
Set rngBody = .Range("H6:K22")
End With
rngBody.Copy
With objMail
.Body = "Please click on the link below..." & vbCrLf & "rngBody.Paste" & vbCrLf & _
"file:\\dbd03\nccode\Router_Proc\04Routing.txt"
End With
With objMail
.To = rngTo
.Cc = rngCc
.Subject = rngSubject
.Display
End With
SendKeys "^({v})", True
Set objOutlook = Nothing
Set objMail = Nothing
1)要使文件链接动态化,您只需在文件路径中包含包含文件名的单元格引用即可。
"<file:\\dbd03\nccode\Router_Proc\" & _
ActiveSheet.Range(<cell address here>) & ">"
注意:在将路径放入电子邮件之前,您可能还需要检查以确保该路径存在(例如)
2)要将单元格粘贴到超链接下方,可以使用另一种SendKeys
组合来模拟Ctrl+的按下End,这会将光标置于电子邮件的末尾。在SendKeys
用于模拟Ctrl+之前执行此操作,V应将单元格范围粘贴在正文之后。您更新的代码应为以下内容:
With objMail
.To = rngTo
.Cc = rngCc
.Subject = rngSubject
.Display
End With
SendKeys "^({END})", True '<--- Add this line HERE
SendKeys "^({v})", True
另一个注意事项:另外,我认为您"rngBody.Paste"
的Body字符串中不需要,因为这只是将确切的文本粘贴到您的电子邮件正文中
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句