我有一个支持宏的工作表,它位于我PC上的共享位置。此工作表用于从员工收集一些数据,位于网络中的共享位置。它具有以下功能:当用户无法及时填写数据时,会向其发送提醒邮件。在邮件内容中,我想将本地网络路径添加到我的Excel文件中。
我通过添加代码
来实现这一目标“You can access the tool from the location " & ThisWorkbook.FullName
在使用此代码发送邮件时,我将获得此文件夹的路径为C:\ Users \ XYZ \ Hello.xlsm 我想发送带有IP地址的网络路径,以便用户可以直接将路径复制到运行并访问该文件。
有趣的是,如果我通过访问我的共享文件夹中的文件从其他系统发送邮件,则邮件将与网络路径一起发送。任何人都可以帮忙吗?
我使用Excel 2007
答案 0 :(得分:1)
为什么ip地址?你不能使用计算机名。
file:\\computername\Users\XYZ\Hello.xlsm.
但是说实话,我认为你正在为这种方式做一些痛苦的事情做好准备。为什么不将HTML表单和一些PHP将数据放入MySQL中,然后将其提取到Excel或其他任何内容中?
- 编辑
以下是获取计算机名称的可能方法的链接。我没试过,所以我不知道它是否有效。
http://spreadsheetpage.com/index.php/tip/retrieving_the_computer_name_or_logged_in_user_name/
答案 1 :(得分:1)
你的基础可能是固定的,所以我会选择一个简单的解决方案,如:
Replace(ThisWorkbook.FullName,"C:\Users\","file:\\computername\Users\)
答案 2 :(得分:0)
我部分解决了我的问题。我使用函数查找计算机名称并操纵ThisWorkbook.Fullname
Private Declare Function GetComputerName Lib "kernel32" _
Alias "GetComputerNameA" _
(ByVal lpBuffer As String, nSize As Long) As Long
Function ReturnComputerName() As String
Dim rString As String * 255, sLen As Long, tString As String
tString = ""
On Error Resume Next
sLen = GetComputerName(rString, 255)
sLen = InStr(1, rString, Chr(0))
If sLen > 0 Then
tString = Left(rString, sLen - 1)
Else
tString = rString
End If
On Error GoTo 0
ReturnComputerName = UCase(Trim(tString))
End Function
Sub GetThePath()
If Left(ThisWorkbook.FullName, 2) <> "\\" Then
If Sheet4.Range("B15").Value = "No" Then
CN = "file:\\" & Evaluate("=ReturnComputerName()") & "\"
End If
mynames = ThisWorkbook.Path
mynamesa = Split(mynames, "\")
elem = UBound(mynamesa)
mynames = mynamesa(elem)
mynames = mynames & "\" & ThisWorkbook.Name
mynames = CN & mynames
ElseIf Left(ThisWorkbook.FullName, 2) = "\\" Then
mynames = ThisWorkbook.FullName
End If
End Sub
缺点:如果文件位于共享文件夹中的文件夹中,则无法找到正确的路径。