如何查找在networking中共享的Excel文件的完整networkingpath?

我有一个macros启用工作表驻留在我的电脑上的共享位置。 此表用于收集员工的一些数据,位于networking中的共享位置。 它有一个function,当用户无法及时填写数据时,会发送提醒邮件。 在邮件内容中,我喜欢将本地networkingpath添加到我的excel文件中。

我通过添加代码来实现这一点

“You can access the tool from the location " & ThisWorkbook.FullName 

在使用此代码发送邮件时,我将此文件夹的path设置为C:\ Users \ XYZ \ Hello.xlsm我想用IP地址发送networkingpath,以便用户可以直接将path复制到运行并访问文件。

有趣的是,如果我通过从我的共享文件夹访问文件,从另一个系统发送邮件,则邮件将随networkingpath一起发送。 任何人都可以帮助吗?

我使用Excel 2007

为什么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/

你的基地可能是固定的,所以我会去一个简单的解决scheme,如:

 Replace(ThisWorkbook.FullName,"C:\Users\","file:\\computername\Users\) 

我部分解决了我的问题。 我使用了一个函数来查找计算机名称和操作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 

记事:如果文件位于共享文件夹内的文件夹中,找不到正确的path。