ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Discussion (Misc queries) (https://www.excelbanter.com/excel-discussion-misc-queries/)
-   -   Identify the network path a file was opened from (Excel2007) (https://www.excelbanter.com/excel-discussion-misc-queries/243645-identify-network-path-file-opened-excel2007.html)

DataBoy

Identify the network path a file was opened from (Excel2007)
 
Not sure if I am using the correct keywords/tricky phrases here but...
I have a workbook placed on our network that contains a macro other can use
create a standard report. I want to write into the code, a way to confirm
that they are using the network file (most current) and not a copy they
placed on their CPU. I have tried the whole path, GetDrive, etc. methods but
it only gives me the "mapped name" (ex1: "T:\") and not the actual network
path information (ex2: "\\usatx\stdrpts\E&Ocalc\"). Hope this makes sense,
any ideas how to get to this level of information in example 2 or other
method to confirm they are using the correct file?


Dave Peterson

Identify the network path a file was opened from (Excel2007)
 
I googled for some help and found this:
http://www.xtremevbtalk.com/showthread.php?t=146146

I tried this, but I can't test it because I'm not on a network.

Option Explicit
Private Const UNIVERSAL_NAME_INFO_LEVEL As Long = &H1

Private Type UNIVERSAL_NAME_INFO
lpUniversalName As String * 256
End Type

Private Declare Function WNetGetUniversalName Lib "mpr" _
Alias "WNetGetUniversalNameA" _
(ByVal lpLocalPath As String, _
ByVal dwInfoLevel As Long, _
lpBuffer As Any, _
lpBufferSize As Long) As Long

Sub Auto_Open()

Dim lngResults As Long
Dim udtUNCPath As UNIVERSAL_NAME_INFO
Dim myStr As String

myStr = ThisWorkbook.Path

If Mid(myStr, 2, 2) = ":\" Then
'looks like a mapped drive x:\xxxx\xxxx
lngResults = WNetGetUniversalName(Left(myStr, 3), _
UNIVERSAL_NAME_INFO_LEVEL, udtUNCPath, Len(udtUNCPath))
MsgBox Replace(udtUNCPath.lpUniversalName, vbNullChar, "")
Else
MsgBox myStr
End If

End Sub

If it doesn't work, you can try googling for "UNC Mapped VB API" and get lots of
hits.

DataBoy wrote:

Not sure if I am using the correct keywords/tricky phrases here but...
I have a workbook placed on our network that contains a macro other can use
create a standard report. I want to write into the code, a way to confirm
that they are using the network file (most current) and not a copy they
placed on their CPU. I have tried the whole path, GetDrive, etc. methods but
it only gives me the "mapped name" (ex1: "T:\") and not the actual network
path information (ex2: "\\usatx\stdrpts\E&Ocalc\"). Hope this makes sense,
any ideas how to get to this level of information in example 2 or other
method to confirm they are using the correct file?


--

Dave Peterson

Databoy

Identify the network path a file was opened from (Excel2007)
 
On Sep 24, 4:35*pm, Dave Peterson wrote:
I googled for some help and found this:http://www.xtremevbtalk.com/showthread.php?t=146146

I tried this, but I can't test it because I'm not on anetwork.

Option Explicit
Private Const UNIVERSAL_NAME_INFO_LEVEL As Long = &H1

Private Type UNIVERSAL_NAME_INFO
* * lpUniversalName As String * 256
End Type

Private Declare Function WNetGetUniversalName Lib "mpr" _
* *Alias "WNetGetUniversalNameA" _
* * (ByVal lpLocalPath As String, _
* * *ByVal dwInfoLevel As Long, _
* * *lpBuffer As Any, _
* * *lpBufferSize As Long) As Long

Sub Auto_Open()

* * Dim lngResults As Long
* * Dim udtUNCPath As UNIVERSAL_NAME_INFO
* * Dim myStr As String

* * myStr = ThisWorkbook.Path

* * If Mid(myStr, 2, 2) = ":\" Then
* * * * 'looks like a mapped drive x:\xxxx\xxxx
* * * * lngResults = WNetGetUniversalName(Left(myStr, 3), _
* * * * * * * * * * * UNIVERSAL_NAME_INFO_LEVEL, udtUNCPath, Len(udtUNCPath))
* * * * MsgBox Replace(udtUNCPath.lpUniversalName, vbNullChar, "")
* * Else
* * * * MsgBox myStr
* * End If

End Sub

If it doesn't work, you can try googling for "UNC Mapped VB API" and get lots of
hits.

DataBoy wrote:

Not sure if I am using the correct keywords/tricky phrases here but...
I have a workbook placed on ournetworkthat contains a macro other can use
create a standard report. I want to write into the code, a way to confirm
that they are using thenetworkfile (most current) and not a copy they
placed on their CPU. I have tried the wholepath, GetDrive, etc. methods but
it only gives me the "mapped name" (ex1: "T:\") and not the actualnetwork
pathinformation (ex2: "\\usatx\stdrpts\E&Ocalc\"). Hope this makes sense,
any ideas how to get to this level of information in example 2 or other
method to confirm they are using the correct file?


--

Dave Peterson


Excellent... it works great... and the additional search criteria
information was very helpful; it always about using the correct works
in the search to get to the right information (I would rate this a 5
out of 5 stars if the link the system provided in the reply email
worked), Thank you!


All times are GMT +1. The time now is 02:47 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com