gpt4 book ai didi

excel - VBScript_无法直接从 Outlook 的电子邮件正文中打开指向 Excel SHEET(不是整个工作簿)的超链接

转载 作者:行者123 更新时间:2023-12-01 22:48:04 25 4
gpt4 key购买 nike

背景:

我应该使用 vbscript 创建一个仪表板(在 excel 中)并通过电子邮件(outlook)将其发送给某人。我已经有一个仪表板模板(excel)。我的脚本打开该模板 excel,使用今天的结果和一些指向新文件的超链接更新 Excel,创建一个 excel 邮件信封并将其发送给某人。

问题:

我的脚本在仪表板 excel 中添加了 2 个超链接。第一个链接指向一个 mht 文件,第二个链接指向另一个 excel 文件。我把邮件发给自己,打开了。打开电子邮件后,当我单击第一个链接(指向 mht 文件)时,它工作正常并打开 IE 以显示 mht 文件内容。问题在于指向 excel 文件的第二个超链接。它不是打开 excel 文件(我已确保链接正确)。

我的代码中是否需要更改某些内容,或者是否有任何 Outlook 设置可以让我直接打开 Excel 文件的链接?

代码:

Option Explicit
Dim objXL, objXb, objXs, strXlPath, strMHTLink, strExcelLink

'Dashboard Excel template
strXlPath = "C:\Users\Gurman\Work\Misc\Excel Hyperlink in Outlook\test.xlsx"

'Link to MHT file
strMHTLink = "C:\Users\Gurman\Work\Misc\Excel Hyperlink in Outlook\MHTFile.mht"

'Link to another Excel File
strExcelLink = "C:\Users\Gurman\Work\Misc\Excel Hyperlink in Outlook\EXLFile.xlsx"

'Opening an excel(strXlPath) and updating it's Sheet1. In Sheet1, I will be adding 2 hyperlinks.
'1st link for the MHT file(strMHTLink)
'2nd link for another Excel File(strExcelLink)

set objXl = CreateObject("excel.application")
objXl.visible = true
objXl.displayAlerts = false
set objXb = objXl.Workbooks.Open(strXlPath)
set objXs = objXb.Sheets("Sheet1")

objXs.Cells(2,1) = "=HYPERLINK("""&strMHTLink&""",""MHTLINK"")" 'When clicked, it should open IE to display mht file contents
objXs.Cells(2,2) = "=HYPERLINK(""["&strExcelLink&"]Sheet1!A1"",""EXLLINK"")" 'When clicked, it should open Sheet1 of EXLFile.xlsx

'Saving the Workbook
objXb.save

'Mailing this excels contents using Mail Envelope
objXb.EnvelopeVisible = true
With objXs.MailEnvelope.Item
.to = "xxxxxxxx@xxxxxx.xxx" 'contains an email address
.subject = "Today's Hyperlinks"
.attachments.add strXlPath 'attaches the saved dashboard in email
.send
End With

objXb.Close
objXl.Quit
set objXs = Nothing
set objXb = Nothing
set objXl = Nothing

截图:

这是我收到的电子邮件。你可以看到,它有 2 个链接和一个 excel 文件作为附件(这个附加的 excel 是我的仪表板(test.xlsx)。它的内容与这个电子邮件正文的内容相同)

enter image description here

在电子邮件正文中,当我单击 mht 链接时,它会按预期打开 IE:

enter image description here

但是当我点击 Excel 的链接时,什么也没有打开。即使点击链接颜色也不会改变:

enter image description here

我如何确保 excel 超链接是正确的?

此电子邮件附有与电子邮件正文内容相同的 excel。我打开那个excel,然后点击超链接。两个超链接的工作方式如下所示。但我想直接打开 Outlook 电子邮件正文中的两个链接(不是这样)。

enter image description here

我已尽力提供尽可能多的信息。如果需要任何其他信息,请告诉我。

更新 1:

Here is the Email body source code as requested by @garbb

<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=Content-Type content="text/html; charset=us-ascii">
<meta name=ProgId content=Excel.Sheet>
<meta name=Generator content="Microsoft Excel 14">
<link rel=File-List href="cid:filelist.xml@01D36E74.B4504EE0">
<link rel=OLE-Object-Data href="cid:oledata.mso">
<style>
<!--table
{mso-displayed-decimal-separator:"\.";
mso-displayed-thousand-separator:"\,";}
.xl15
{padding-top:1px;
padding-right:1px;
padding-left:1px;
mso-ignore:padding;
color:black;
font-size:11.0pt;
font-weight:400;
font-style:normal;
text-decoration:none;
font-family:Calibri, sans-serif;
mso-font-charset:0;
mso-number-format:General;
text-align:general;
vertical-align:bottom;
mso-background-source:auto;
mso-pattern:auto;
white-space:nowrap;}
.xl65
{padding-top:1px;
padding-right:1px;
padding-left:1px;
mso-ignore:padding;
color:blue;
font-size:11.0pt;
font-weight:400;
font-style:normal;
text-decoration:underline;
text-underline-style:single;
font-family:Calibri, sans-serif;
mso-font-charset:0;
mso-number-format:General;
text-align:general;
vertical-align:bottom;
mso-background-source:auto;
mso-pattern:auto;
white-space:nowrap;}
-->
</style>
<!--[if gte mso 9]><xml>
<x:ExcelWorkbook>
<x:ExcelWorksheets>
<x:ExcelWorksheet>
<x:Name>Sheet1</x:Name>
<x:WorksheetOptions>
<x:DefaultRowHeight>300</x:DefaultRowHeight>
<x:Selected/>
<x:Panes>
<x:Pane>
<x:Number>3</x:Number>
<x:ActiveRow>8</x:ActiveRow>
<x:ActiveCol>4</x:ActiveCol>
</x:Pane>
</x:Panes>
<x:ProtectContents>False</x:ProtectContents>
<x:ProtectObjects>False</x:ProtectObjects>
<x:ProtectScenarios>False</x:ProtectScenarios>
</x:WorksheetOptions>
</x:ExcelWorksheet>
</x:ExcelWorksheets>
<x:WindowHeight>8010</x:WindowHeight>
<x:WindowWidth>14805</x:WindowWidth>
<x:WindowTopX>240</x:WindowTopX>
<x:WindowTopY>105</x:WindowTopY>
<x:HasEnvelope/>
<x:ProtectStructure>False</x:ProtectStructure>
<x:ProtectWindows>False</x:ProtectWindows>
</x:ExcelWorkbook>
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="3073" />
</xml><![endif]-->
</head>

<body link=blue vlink=purple>

<table border=0 cellpadding=0 cellspacing=0 width=183 style='border-collapse:
collapse;table-layout:fixed;width:138pt'>
<col width=89 style='mso-width-source:userset;mso-width-alt:3254;width:67pt'>
<col width=94 style='mso-width-source:userset;mso-width-alt:3437;width:71pt'>
<tr height=20 style='height:15.0pt'>
<td height=20 class=xl15 width=89 style='height:15.0pt;width:67pt'>Link_To_MHT</td>
<td class=xl15 width=94 style='width:71pt'>Link_To_Excel</td>
</tr>
<tr height=20 style='height:15.0pt'>
<td height=20 class=xl65 style='height:15.0pt'><a
href="file:///C:\Users\Gurman\Work\Misc\Excel%20Hyperlink%20in%20Outlook\MHTFile.mht">MHTLINK</a></td>
<td class=xl65><a
href="%5bC:/Users/Gurman/Work/Misc/Excel%20Hyperlink%20in%20Outlook/EXLFile.xlsx%5dSheet1!A1">EXLLINK</a></td>
</tr>
<![if supportMisalignedColumns]>
<tr height=0 style='display:none'>
<td width=89 style='width:67pt'></td>
<td width=94 style='width:71pt'></td>
</tr>
<![endif]>
</table>

</body>

</html>


更新 2

This is how both the HyperLink formulas are displayed in Dashboard Excel cells:

MHTLINK(working from within dashboard excel):

=HYPERLINK("C:\Users\Gurman\Work\Misc\Excel Hyperlink in Outlook\MHTFile.mht","MHTLINK")

EXLLINK(working from within the dashboard excel):

=HYPERLINK("[C:\Users\Gurman\Work\Misc\Excel Hyperlink in Outlook\EXLFile.xlsx]Sheet1!A1","EXLLINK")

In Outlook, as shown in the email source in Update 1, the links are:

MHTLINK(working from email body):

<a href="file:///C:\Users\Gurman\Work\Misc\Excel%20Hyperlink%20in%20Outlook\MHTFile.mht">MHTLINK</a>

EXLLINK(NOT Working from email body):

<a href="%5bC:/Users/Gurman/Work/Misc/Excel%20Hyperlink%20in%20Outlook/EXLFile.xlsx%5dSheet1!A1">EXLLINK</a>


更新 3(问题根本原因)

在我的 vbscript 代码中,我有一行:
objXs.Cells(2,2) = "=HYPERLINK(""["&strExcelLink&"]Sheet1!A1"",""EXLLINK"")"

这实际上创建了一个指向 的超链接。表1 的 Excel 书。在此单元格中写入的公式也是正确的,即 =HYPERLINK("[C:\Users\Gurman\Work\Misc\Excel Hyperlink in Outlook\EXLFile.xlsx]Sheet1!A1","EXLLINK") .重要的是我加 Sheet1!A1在这个公式中,因为我希望超链接指向工作簿的特定工作表(在本例中为 Sheet1)

当这个 EXCEL 公式转换为 OUTLOOK MAIL 中的链接时,问题就出现了,它的值变为:
<a href="%5bC:/Users/Gurman/Work/Misc/Excel%20Hyperlink%20in%20Outlook/EXLFile.xlsx%5dSheet1!A1">EXLLINK</a>

上面的链接似乎不正确,因为它有一些十六进制值,如 %5b , %5d等等。因此,它不能直接工作。

如果我更改我的 VBScript 代码以仅创建指向 Excel 工作簿的超链接,而不是创建指向其“Sheet1”的超链接,则它工作正常,我也可以直接从电子邮件中打开 Excel 工作簿链接。

VBscript 中的更新行:
objXs.Cells(2,2) = "=HYPERLINK("""&strExcelLink&""",""EXLLINK"")"

在电子邮件源中,它被转换为:
<a href="file:///C:\Users\Gurman\Work\Misc\Excel%20Hyperlink%20in%20Outlook\EXLFile.xlsx">EXLLINK</a>

我可以直接从电子邮件中使用此链接打开 Excel 工作簿。但是这种方法的缺陷是在这种情况下它可能会也可能不会打开 Sheet1。一旦有人单击超链接,可能会打开 Sheet2 而不是 Sheet1。因此,我想在我的代码中处理这件事。

所以,我的问题/问题仍未解决:

是否可以在 Outlook 的电子邮件正文中有一个超链接,它可以打开 Excel 工作簿的特定工作表?

最佳答案

而不是使用 HYPERLINK这实际上是一个公式,只需在单元格中添加一个真正的超链接:

objXs.Cells(2,2).Hyperlinks.Add objXs.cells(2,2), strExcelLink, "Sheet1!A1", "My Screentip", "EXLLINK"

关于excel - VBScript_无法直接从 Outlook 的电子邮件正文中打开指向 Excel SHEET(不是整个工作簿)的超链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47666879/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com