ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Get default add-in path (https://www.excelbanter.com/excel-programming/374057-get-default-add-path.html)

RB Smissaert

Get default add-in path
 
What is the best way to get the default .xla add-in path?

Will this always be Application.UserLibraryPath ?

Or should I use a function like this:

Function GetDefaultAddinPath(Optional strIdentifier _
As String = "\addins\") As String

Dim i As Long
Dim lCount As Long
Dim lPos As Long

strIdentifier = UCase(strIdentifier)
lCount = Application.AddIns.Count

For i = 1 To lCount
lPos = InStr(1, UCase(Application.AddIns(i).FullName), _
strIdentifier, _
vbBinaryCompare)
If lPos 0 Then
GetDefaultAddinPath = Left$(Application.AddIns(i).FullName, _
lPos + Len(strIdentifier) - 1)
Exit Function
End If
Next i

End Function


RBS

Peter T

Get default add-in path
 
Hi Bart,

That function appears to return the path of the first addin in the
collection that happens to exist in a folder named somepath\addins. That
assumes there is at least one addin that has a path (ie not one of the
bundled addins) and user hasn't put it in a user named folder of same name
"addins". So I would have thought the simple return you mentioned, or to
cater also for XL97 -

Function GetDefaultAddinPath2() As String
Dim sPath As String, sSep As String
#If VBA6 Then
sPath = Application.UserLibraryPath
#Else
sPath = Application.LibraryPath
#End If
sSep = Application.PathSeparator
If Right$(sPath, 1) < sSep Then
sPath = sPath & sSep
End If
GetDefaultAddinPath2 = sPath
End Function

Regards,
Peter T


"RB Smissaert" wrote in message
...
What is the best way to get the default .xla add-in path?

Will this always be Application.UserLibraryPath ?

Or should I use a function like this:

Function GetDefaultAddinPath(Optional strIdentifier _
As String = "\addins\") As String

Dim i As Long
Dim lCount As Long
Dim lPos As Long

strIdentifier = UCase(strIdentifier)
lCount = Application.AddIns.Count

For i = 1 To lCount
lPos = InStr(1, UCase(Application.AddIns(i).FullName), _
strIdentifier, _
vbBinaryCompare)
If lPos 0 Then
GetDefaultAddinPath = Left$(Application.AddIns(i).FullName, _
lPos + Len(strIdentifier) - 1)
Exit Function
End If
Next i

End Function


RBS




RB Smissaert

Get default add-in path
 
Hi Peter,

I just wondered if Application.UserLibraryPath would be foolproof or if I
needed something
along the lines (but as you say would need to be worked out a bit further)
of the function that
loops through all the add-in path's.

I have now gone with the simple Application.UserLibraryPath.
Thanks for the refinement for XL97 although I don't think I have users on
that anymore.

I needed to know this as despite having an installer that to me seems to
cover all some users still
manage to install to the default add-in folder and that causes all sorts of
problems for my app.
So I check for this and delete (kill) some files if they are there.

Bart


"Peter T" <peter_t@discussions wrote in message
...
Hi Bart,

That function appears to return the path of the first addin in the
collection that happens to exist in a folder named somepath\addins. That
assumes there is at least one addin that has a path (ie not one of the
bundled addins) and user hasn't put it in a user named folder of same name
"addins". So I would have thought the simple return you mentioned, or to
cater also for XL97 -

Function GetDefaultAddinPath2() As String
Dim sPath As String, sSep As String
#If VBA6 Then
sPath = Application.UserLibraryPath
#Else
sPath = Application.LibraryPath
#End If
sSep = Application.PathSeparator
If Right$(sPath, 1) < sSep Then
sPath = sPath & sSep
End If
GetDefaultAddinPath2 = sPath
End Function

Regards,
Peter T


"RB Smissaert" wrote in message
...
What is the best way to get the default .xla add-in path?

Will this always be Application.UserLibraryPath ?

Or should I use a function like this:

Function GetDefaultAddinPath(Optional strIdentifier _
As String = "\addins\") As String

Dim i As Long
Dim lCount As Long
Dim lPos As Long

strIdentifier = UCase(strIdentifier)
lCount = Application.AddIns.Count

For i = 1 To lCount
lPos = InStr(1, UCase(Application.AddIns(i).FullName), _
strIdentifier, _
vbBinaryCompare)
If lPos 0 Then
GetDefaultAddinPath = Left$(Application.AddIns(i).FullName, _
lPos + Len(strIdentifier) - 1)
Exit Function
End If
Next i

End Function


RBS






All times are GMT +1. The time now is 10:23 AM.

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