View Single Post
  #4   Report Post  
Posted to microsoft.public.excel.programming
[email protected] dave.cuthill@computalog.com is offline
external usenet poster
 
Posts: 53
Default 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 -