ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Checking if a font is installed (2007) (https://www.excelbanter.com/excel-programming/444091-checking-if-font-installed-2007-a.html)

[email protected]

Checking if a font is installed (2007)
 
I have been using the attached function to determine if a specific
font is installed. It seems to work fine is I have my macro security
set at "Enable all Macros" but when I set the macro security to
"Disable all macros with notification" I get an error at For i=0 to
Fontlist.listcount - 1 when I am prompted and allow macros to run.


Runtime error '-2147467259 (80004005): Method 'ListCount of object
_commandbarcombox failed ...

This always ran fine in 2003.

Function FontIsInstalled(sFont) As Boolean
' Returns True if sFont is installed
FontIsInstalled = False
Set FontList =
Application.CommandBars("Formatting").FindControl( ID:=1728)

' If Font control is missing, create a temp CommandBar
If FontList Is Nothing Then
Set TempBar = Application.CommandBars.Add
Set FontList = TempBar.Controls.Add(ID:=1728)
End If

For i = 0 To FontList.ListCount - 1
If FontList.List(i + 1) = sFont Then
FontIsInstalled = True
On Error Resume Next
TempBar.Delete
Exit Function
End If
Next i

' Delete temp CommandBar if it exists
On Error Resume Next
TempBar.Delete
End Function


Jim Cone[_2_]

Checking if a font is installed (2007)
 
It works for me in xl2007.
Try declaring your variables.
The 1728 control can be either a CommandBarControl or a CommandBarComboBox.
You are also missing a line continuation character after "Set FontList ="

You may also want to try resetting the Toolbar...
Application.CommandBars("Formatting").Reset
--
Jim Cone
Portland, Oregon USA
http://tinyurl.com/TrialVersions
(commercial excel programs)





wrote in message
...
I have been using the attached function to determine if a specific
font is installed. It seems to work fine is I have my macro security
set at "Enable all Macros" but when I set the macro security to
"Disable all macros with notification" I get an error at For i=0 to
Fontlist.listcount - 1 when I am prompted and allow macros to run.


Runtime error '-2147467259 (80004005): Method 'ListCount of object
_commandbarcombox failed ...

This always ran fine in 2003.

Function FontIsInstalled(sFont) As Boolean
' Returns True if sFont is installed
FontIsInstalled = False
Set FontList =
Application.CommandBars("Formatting").FindControl( ID:=1728)

' If Font control is missing, create a temp CommandBar
If FontList Is Nothing Then
Set TempBar = Application.CommandBars.Add
Set FontList = TempBar.Controls.Add(ID:=1728)
End If

For i = 0 To FontList.ListCount - 1
If FontList.List(i + 1) = sFont Then
FontIsInstalled = True
On Error Resume Next
TempBar.Delete
Exit Function
End If
Next i

' Delete temp CommandBar if it exists
On Error Resume Next
TempBar.Delete
End Function




[email protected]

Checking if a font is installed (2007)
 
I have this executing as part of a workbook open event. It errors when
macros are disabled and prompted but not when they are enabled without
prompting. I will try some of your suggestions but I don't see why in
one case I get the error but not in the other.


On Jan 5, 4:43*pm, "Jim Cone" wrote:
It works for me in xl2007.
Try declaring your variables.
The 1728 control can be either a CommandBarControl or a CommandBarComboBox.


[email protected]

Checking if a font is installed (2007)
 
On Error Resume Next
Set FontList =
Application.CommandBars("Formatting").FindControl( ID:=1728)

Seems to resolve the problem - I guess possibly since maybe the
formatting commandbar is not loaded for some reason when the fontlist
is trying to be set to it.


On Jan 5, 10:40*pm, wrote:
I have this executing as part of a workbook open event. It errors when
macros are disabled and prompted but not when they are enabled without
prompting. I will try some of your suggestions but I don't see why in
one case I get the error but not in the other.

On Jan 5, 4:43*pm, "Jim Cone" wrote:



It works for me in xl2007.
Try declaring your variables.
The 1728 control can be either a CommandBarControl or a CommandBarComboBox.
You are also missing a line continuation character after "Set FontList ="


You may also want to try resetting the Toolbar...
Application.CommandBars("Formatting").Reset
--
Jim Cone
Portland, Oregon USAhttp://tinyurl.com/TrialVersions
(commercial excel programs)



wrote in ...


I have been using the attached function to determine if a specific
font is installed. It seems to work fine is I have my macro security
set at "Enable all Macros" but when I set the macro security to
"Disable all macros with notification" I get an error at For i=0 to
Fontlist.listcount - 1 when I am prompted and allow macros to run.


Runtime error '-2147467259 (80004005): Method 'ListCount of object
_commandbarcombox failed ...


This always ran fine in 2003.


Function FontIsInstalled(sFont) As Boolean
' * Returns True if sFont is installed
* *FontIsInstalled = False
* *Set FontList =
Application.CommandBars("Formatting").FindControl( ID:=1728)


' * If Font control is missing, create a temp CommandBar
* *If FontList Is Nothing Then
* * * *Set TempBar = Application.CommandBars.Add
* * * *Set FontList = TempBar.Controls.Add(ID:=1728)
* *End If


* *For i = 0 To FontList.ListCount - 1
* * * *If FontList.List(i + 1) = sFont Then
* * * * * *FontIsInstalled = True
* * * * * *On Error Resume Next
* * * * * *TempBar.Delete
* * * * * *Exit Function
* * * *End If
* *Next i


' * Delete temp CommandBar if it exists
* *On Error Resume Next
* *TempBar.Delete
End Function- Hide quoted text -


- Show quoted text -- Hide quoted text -


- Show quoted text -




All times are GMT +1. The time now is 06:22 PM.

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