设想情况:
从带有选定记录集的访问表单中,报表中填充了数据,通过VBA将其转换为HTML格式并与Outlook一起发送。然后,内容在收件人的电子邮件正文中显示为HTML。这包含指向此窗体中记录集的链接。因此,假设接收方也具有访问权限,并且具有完全相同的数据库(以及相同的位置和内容),则链接将在单击时打开他的数据库文件,然后打开表单,然后使用查询打开准确的记录。
基于这个..。
...I在我的报告中添加了一个文本字段,并将其标记为超链接:
Click here#C:\MainDatabase.accdb#Query frmForm01
单击报表中的超链接(打开Access & file),本地存储的HTML中的链接也能工作。
问题:
虽然链接是发送的,也出现在收件人的电子邮件正文中作为链接“点击这里”,但显示的链接是不可点击的,只有蓝色下划线的文本!。
经过大量的实验,我发现这都是Outlook!在sending....it之前,该链接在Outlook邮件正文预览中是完整的,它必须是一个Outlook设置,可以在发送/发送期间将链接转换为文本。在Outlook菜单中,我已经检查了格式设置:“转换为HTML是确定的!”(不是纯文本)。那还能有什么原因?
会非常感激你的解决方案。谢谢!
我的代码:
Sub CreateHTMLMail()
Dim OutApp As Outlook.Application
Dim OutMail As Outlook.MailItem
Dim FSO As Object
Dim AttchFile As String, EmailTo As String, strSig As String
Set OutApp = New Outlook.Application
Set OutMail = OutApp.CreateItem(olMailItem)
AttchFile = "C:\AttachmTemp.htm"
EmailTo = "abcd@efgh.com"
DoCmd.OpenReport "NewReport", acViewReport, , "[ID]='" & Me.ID & "'", acHidden
DoCmd.OutputTo acOutputReport, "NewReport", acFormatHTML, AttchFile
Set FSO = CreateObject("Scripting.FileSystemObject")
strSig = FSO.OpenTextFile(AttchFile).ReadAll
With OutMail
.TO = EmailTo
.Subject = "New Message"
.BodyFormat = olFormatHTML
.HTMLBody = strSig
.send
End With
End If
Kill AttchFile
Set OutApp = Nothing
Set OutMail = Nothing
End Sub
发布于 2021-06-15 22:17:45
我使用自定义的URL协议处理程序来完成这个任务。
首先,创建(并在测试后分发)这样的.reg文件(用应用程序名称替换myapp
):
Windows Registry Editor Version 5.00
; Andre, 2019
[HKEY_CLASSES_ROOT\myapp]
@="URL:myapp-Open"
"URL Protocol"=""
"EditFlags"=hex:02,00,00,00
[HKEY_CLASSES_ROOT\myapp\DefaultIcon]
@="C:\\path\\myapp\\myapp.ico"
[HKEY_CLASSES_ROOT\myapp\shell]
@="open"
[HKEY_CLASSES_ROOT\myapp\shell\open]
[HKEY_CLASSES_ROOT\myapp\shell\open\command]
; using a .vbs to start my app
; @="wscript C:\\path\\myapp\\Startmyapp.vbs \"%1\""
; (untested) starting Access directly, needs the /cmd switch
@="\"C:\\Program Files (x86)\\Microsoft Office\\Office16\\msaccess.exe\" C:\\path\\myapp\\Myapp.accde /cmd \"%1\""
; If you use Outlook, prevent the Security warning
; https://stackoverflow.com/a/34660198/3820271
; Note: the whole subtree starting with (at least) "Security" will be created.
; This path is for Office 2016.
[HKEY_CURRENT_USER\Software\Policies\Microsoft\Office\16.0\Common\Security\Trusted Protocols\All Applications\myapp:]
请注意,我使用.vbs脚本启动我的Access应用程序,它也应该与msaccess.exe路径和本地前端一起工作。
参见myapp\shell\open\命令中的注释
然后,在HTML电子邮件中,使用如下URL:
url:myapp:ID:2357
ID:2357
将作为命令行参数传递给应用程序。
有关如何读取此字符串,然后在Autoexec函数中解析该字符串并打开窗体,请参见Opening Microsoft Access with parameters。
要测试这一点,只需在Start/Run或Cmd窗口中键入myapp:ID:2357
。
https://stackoverflow.com/questions/67993711
复制相似问题