gpt4 book ai didi

excel - 如何使用 VBA 判断宏是否正在从电子邮件或桌面运行?

转载 作者:行者123 更新时间:2023-12-02 15:52:54 25 4
gpt4 key购买 nike

我开发宏已经很多年了。我们用户从本地驱动器运行这些宏。然而,由于人员流动、新员工等原因,这些信息并不总是传递给新用户。

我们有一个中心位置,用户可以在其中下载这些宏的副本。如果他们遵循程序,则会将宏保存到本地驱动器。但是,有时用户会通过电子邮件从同事那里获取宏。然后他们从电子邮件中打开或将其保存到桌面上。

如果他们通过电子邮件或桌面运行我们的宏,则可能会出现问题;这通常需要有人联系我们寻求支持。我想尝试减少支持电话的数量。

我想知道是否有办法判断宏是从电子邮件打开还是从用户桌面打开。理想情况下,我正在考虑将代码添加到“打开时”模块并显示一条消息,告诉用户在打开/运行宏之前将宏保存到本地驱动器。

但是,我不确定如何识别这两个位置。我以前使用过“路径”属性,但这些宏可以位于数百个现场办事处的任意数量的驱动器上。我认为如果我能够识别电子邮件或桌面位置,然后显示消息,那就更好了。

我们的大多数用户使用的是 Office 2010 或 2016。感谢您的帮助............

最佳答案

如果您从邮件中打开工作簿并调试 ThisWorkbook.Path 您将得到类似以下内容的内容:

?本工作簿.路径
C:\Users\UserName\AppData\Local\Microsoft\Windows\INetCache\Content.Outlook\9PWSZZ9J

相同的内容将转到桌面,因此您可以使用 Workbook_Open() 触发器来检查工作簿路径,如果它类似于 Outlook桌面发送一条消息警告将其保存在本地驱动器上。

根据 Shaves 评论进行编辑:

还有最后一种方法。假设他们的组策略允许他们将文件保存在本地 Dirve C: 上(假设他们都拥有该驱动器)

你的方法可能是,

Option Explicit
Private Sub Workbook_Open()

Dim DesiredFilePath As String, CurrentFilePath As String, wb As Workbook

Set wb = ThisWorkbook

DesiredFilePath = "C:\" & wb.Name
CurrentFilePath = wb.Path & "\" & wb.Name

If DesiredFilePath <> CurrentFilePath Then
wb.SaveAs DesiredFilePath
On Error Resume Next
Kill CurrentFilePath
On Error GoTo 0
MsgBox "The file wasn't saved where it should be to work properly. It's been saved in: " & CurrentFilePath
End If


End Sub

这样,您不仅可以警告用户,还可以将文件保存在需要的位置,并从警告用户如何找到它的位置将其删除。

关于excel - 如何使用 VBA 判断宏是否正在从电子邮件或桌面运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55025469/

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