File owner attributes through Excel VBA

P

PJ

Is it possible to use VBA to determine the owner of a file saved on a network
share? I am trying to get the ID of the person logged in when the file was
created on the server. The file itself is not an MS office file however, I'm
just trying to get the name of the owner as part of my macro in Excel.
 
J

Joel

If you can get the ownership through any tool then you should be able to get
the ownship through VBA since VBA can call any application. The only way I
know of to get a file permission on a server is to be able to map a drive to
the server or login into the server. If you don't have permission to do
either of these operations then you won't be able to get the ownship through
VBA.

I you tell me how you get the ownship of the file without using VBA then I
can write code in VBA to do the same operation. VBA can call any DLL and
network login and transversing the file system to get the owner is possible
through a Win32 Dll.
 
P

PJ

Hi Joel,

I work in an all Windows environment and have read/write access to the
folder where the particular files are stored. I usually right-click on the
file from Windows Explorer, choose Properties, click the Advanced button on
the Security tab, and finally switch to the Owner tab which shows me the
current owner. If there is any way to return the owner's name using VBA that
would be great.

PJ
 
J

Joel

I found an easier way of getting the file owner without having to use a DLL.
Try this code

Sub owner()
Dim Folder As String
Dim FName As String

Folder = "c:\temp\"
RowCount = 1
FName = Dir(Folder & "*.*")

Do While FName <> ""
Range("A" & RowCount) = Folder & FName
Range("B" & RowCount) = GetFileOwner(Folder, FName)

RowCount = RowCount + 1
FName = Dir()
Loop



End Sub

Function GetFileOwner(fileDir As String, fileName As String) As String

'On Error Resume Next
Dim secUtil As Object
Dim secDesc As Object
Set secUtil = CreateObject("ADsSecurityUtility")
Set secDesc = secUtil.GetSecurityDescriptor(fileDir & fileName, 1, 1)
GetFileOwner = secDesc.owner
End Function
 
P

PJ

Joel,

That works like a charm. For my needs, I'm actually looking for a specific
file so I hard coded the name and set it to prompt the user running the macro
with the name of the person associated with creating the file. The file is a
temp file created by a 3rd party program so they need to track the person
down and have them exit the application before they can run the Excel macro
in it's entirety.

Thanks for the help!
PJ
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top