# Solved: List of Symbols



## Tamara1969 (Oct 27, 2005)

Hello everyone,

Does anyone know where to find a quick reference list of all symbols in MS Word 2000 Professional? Everytime I look for a specific symbol I waste so much time as there is about 20 font categories and 40 subset categories to look in. Does such a list exist?

Any help would be appreciated.

Thanks


----------



## WhitPhil (Oct 4, 2000)

Symbols should be a function of the fonts installed.

IE: If you did not have WingDings installed, those symbol would not be available to you.

So, if you have 20 Symbol fonts installed, maybe the easiest is to get a Font program that will allow you to print them out? Or, give you easier access to them to browse for a specific item.
Or did I misunderstand?


----------



## Tamara1969 (Oct 27, 2005)

Thanks Phil, I am not sure that our IS Department at work would approve of a font program, so I dont think that is an option. I was hoping that somewhere in MS Word they had a list of symbols rather than having to go into each subset looking for it. For example when looking for the checkmark, it took me 15 minutes to find it. When i found it I assigned a shortcut key to it so I wouldnt waste my time again.


----------



## WhitPhil (Oct 4, 2000)

How are you actually "looking" for a symbol??

Insert > Symbol ??


----------



## Tamara1969 (Oct 27, 2005)

Yes.


----------



## cristobal03 (Aug 5, 2005)

Howdy, welcome to TSG.

I wonder if you couldn't use VBA code to build a document that had each symbol, grouped by font, with an example of itself and its corresponding character code/description.

I've never done it, but it'd be a little something like this, I guess:


```
Option Explicit
Option Compare Binary

Private Sub MySymbolsList()
  Dim saFontArray() As String
  Dim strFonts As String
  Dim intFontCount As Integer
  Dim intCharCount As Integer

  ' Some of the characters in the constant below might
  ' cause errors, i'm just guessing...quotes would, for sure.
  ' You might be able to circumvent this by establishing a
  ' RegExp object, which requires a reference (I'm not sure which).
  Const ALPHA_NUMERICS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" & _
                         "abcdefghijklmnopqrstuvwxyz" & _
                         "[email protected]#$%^&*()-=_+,./;[]\<>?:{}|`~"

  strFonts = "Symbol Font 1,Symbol Font 2,Symbol Font 3,Symbol Font n"
  saFontArray = Split(strFonts, ",")

  With ActiveDocument.Range
    .Font.Size = 14
    For intFontCount = 0 To UBound(saFontArray)
      .Font.Name = "Arial"
      .InsertAfter "Font Name: " & _
                    saFontArray(intFontCount) & _
                    vbCr
      For intCharCount = 0 To Len(ALPHA_NUMERICS)
        .Font.Name = saFontArray(intFontCount)
        .InsertAfter Mid(ALPHA_NUMERICS, intCharCount, 1) & " = "
        .Font.Name = "Arial"
        .InsertAfter Mid(ALPHA_NUMERICS, intCharCount, 1) & "     "
      Next intCharCount
      .InsertAfter vbCr & vbCr
    Next intFontCount
  End With
End Sub
```
That's just airware, but it compiles, so. I'm not sure if that's what you mean?

Otherwise I got nothin.

HTH

chris.


----------



## cristobal03 (Aug 5, 2005)

[bump]

You could also use the character map, though it's probably about the same amount of time.

chris.


----------



## Tamara1969 (Oct 27, 2005)

Thanks Cristo, however you lost me the the VBA Code reply lol. Is the Character map that you are referring to the one that is in Insert Symbols?


----------



## cristobal03 (Aug 5, 2005)

Don't worry 'bout the code, it works (with a couple of small tweaks; am testing now) but needs a little work.

The character map can be found by clicking *Start-->Programs-->Accessories-->System Tools-->Character Map*. It's a utility that lists the keycode combination for every character in a font. I don't know if it'll be any handier than *Insert-->Symbol...*, but it might help.

chris.


----------



## cristobal03 (Aug 5, 2005)

[bump]

Just checked to see what *Insert-->Symbol...* is (I've never used it). That's a big nix on the character map, it's the same thing, plus the hassle of copy/pasting.

Lemme get this code working, I think it'll give you what you're after.

chris.


----------



## Tamara1969 (Oct 27, 2005)

OK gotcha, however you are right when you say that it may not be any handier. Just frustrating when you are looking for something specific and have to scroll through everything to find it. Maybe I am asking for something that is just not available.

Hey could be an idea for a new book LOL "A Quick Guide to Finding Those Frustrating Symbols That You Never Knew Existed".


----------



## cristobal03 (Aug 5, 2005)

Yeah, there are a lot of accessibility issues that aren't addressed by program designers.

But, the code I'm writing will (hopefully) build a document that looks something like


```
Font Name: Symbol
A = [some symbol] B = [B's symbol]
...
a = [another symbol] b = [b's symbol]
...
0 = [you get the point] 1 = [this symbol]

Font Name: Another Symbol Font
A = [etc.]
```
The only problem is, I don't know how to change the font of just one character. I'm really close though, I'll let you know.

chris.


----------



## cristobal03 (Aug 5, 2005)

Welp, I got it working. It prints a page per font name, with the corresponding symbols.

Below is the code:


```
Option Explicit
Option Compare Binary

Private Sub MySymbolFonts()

' Procedure to go through a list of user-defined symbol fonts and
' display their alphanumeric representations.

  Dim saFontArray() As String
  Dim strFonts As String
  Dim intFontCount As Integer
  Dim intCharCount As Integer

  ' Note that the below constant does not include single or
  ' double quotes, because that would affect the string.
  ' I'm not sure how you'd get around that.
  Const ALPHA_NUMERICS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" & _
                         "abcdefghijklmnopqrstuvwxyz" & _
                         "[email protected]#$%^&*()-=_+,./;[]\<>?:{}|`~"

  ' You'd change this string to represent whatever fonts you
  ' wanted to list. For example:
  '
  ' strFonts = "Wingdings,Wingdings 2,Wingdings 3"
  '
  strFonts = "Symbol Font 1,Symbol Font 2,Symbol Font 3"
  saFontArray = Split(strFonts, ",")

  ' Set the initial font
  ActiveDocument.Range.Font.Name = "Courier New"

  With ActiveDocument.Range
    .Font.Size = 14
    For intFontCount = 0 To UBound(saFontArray)
      If intFontCount > 0 Then
        .Characters(.End).InsertBreak wdPageBreak
      End If
      .InsertAfter "Font Name: " & saFontArray(intFontCount)
      .InsertAfter vbCr
      For intCharCount = 1 To Len(ALPHA_NUMERICS)
        If (intCharCount Mod 5 = 0) Then .InsertAfter vbCr
        .InsertAfter Mid(ALPHA_NUMERICS, intCharCount, 1)
        .Characters(.End - 1).Font.Name = "Courier New"
        .InsertAfter " is " & Mid(ALPHA_NUMERICS, intCharCount, 1) & "   "
        .Characters(.End - 4).Font.Name = saFontArray(intFontCount)
      Next intCharCount
    Next intFontCount
  End With
End Sub
```
I've attached an example document. If you want help on how to apply this procedure to your own needs, post back please.

HTH

chris.

[edit]
Just so's you know, there's a lot of room for improvement. One easy thing that I should've done would be to set up 4 tab stops at regular intervals rather than using manual spaces. Also, the user has to hard-code font names into the script. This could be revised with a multi-select listbox in a userform, I guess.

Anyway, just saying this was quick and dirty to accommodate OP.
[/edit]


----------



## Tamara1969 (Oct 27, 2005)

Wow, you are a genius cristo! Thank you so much. Please let me know how to apply this. I am hoping that I can do it from my work computer. IS Dept. may have to do it for me as alot of functions we dont have access to.

This is my first time coming in here and I have never met a friendlier bunch of people all willing to help everyone out. Thanks again.


----------



## cristobal03 (Aug 5, 2005)

First, to save you some trouble, could you please list the font names for every symbol font for which you want a reference?

Symbol, Wingdings, Webdings, etc...

I'll put them in my code, and then give you a step-by-step instruction set for creating and running the macro.

chris.


----------



## Tamara1969 (Oct 27, 2005)

Perfect. Here they are:
(normal text)
Arial
Arial Unicode MS
Courier New
Lucida Console
Lucida Sans Unicode
Marlett
Microsoft Sans Serif
MS Mincho
MS Outlook
MS Extra
Palatino Linotype
PMingLiU
Symbol
Tahoma
Times New Roman
Webdings
Wingdings
Wingdings 2
Wingdings 3


----------



## cristobal03 (Aug 5, 2005)

Egh, I was worried you'd say a list like that. Several of the fonts you listed aren't truly symbol fonts, which is what my code was designed to accommodate. I'm not a font expert, but the basic gist is this: whereas fonts used to only be able to contain 128 or 256 characters, modern computing allows for a much larger character set. The larger character sets rely on *Unicode* character codes, and I'm not sure how to generate those using VBA. Either way, for most Unicode characters, you'll have to copy/paste the character anyway because they don't have a keyboard analog (some do have an *Alt*ed keypad combination code, though). Let me see if I can't figure out a way to adapt my code to Unicode character sets; I'll get back to you.

If I can't, I'll run with the fonts you listed and show you what I mean by my code not working for extended character sets.

chris.


----------



## cristobal03 (Aug 5, 2005)

[bump]

The other issue with that is, if you're on a Macintosh platform, I just found out VBA doesn't support Unicode for Macs.

Keep in mind that a Unicode character set may have as many as 65,000+ characters, which would make about a 300 page document for one font. I don't know any fonts that use all 65,536 spaces...I guess I could test against *Null* values...

Lemme give this a try, I'll get back to you.

chris.


----------



## cristobal03 (Aug 5, 2005)

I'm testing something right now, it's probably going to drop my computer. I don't think this extended application will be of much use to you; so, once this test is done, to help you out at least a bit, I'm just going to run my original code on true symbol fonts, then attach a document that you can print off as a handy reference.

Sorry I can't do more with the Unicode stuff, but like I said, it'd be like flipping through a book for one font.

If this isn't any use to you, let me know and I'll see if I can't find some online resources for commonly-used Unicode symbols listed by font.

chris.


----------



## cristobal03 (Aug 5, 2005)

[bump]

Probably my last bump on this thread. I've attached a document that you can save and print at your leisure; if some of the fonts don't display on your computer, you'll have to acquire that particular type of font. The purpose of the document is to be a handy visual reference for the alpha-numeric keys associated with symbols. Selecting the named font and pressing the specified key on your keyboard should insert the appropriate symbol listed in the attachment.

Sorry I wasn't able to be more helpful. Somebody else who knows some good online resources will hopefully bump this thread.

chris.


----------



## Tamara1969 (Oct 27, 2005)

Hi Cristobal,

Thank you so much for the time you have spend in helping me. I have printed off the list that you did up and it sure will come in handy. Sorry for the delay in response, it has been hectic at work. Cheers to you!!


----------



## cristobal03 (Aug 5, 2005)

Glad I could help :up: and sorry about those pesky unicode symbols :down:

If you feel satisfied, you can mark this thread Solved using the *Thread Tools* at the top of the page.

chris.


----------



## cristobal03 (Aug 5, 2005)

[bump]

Thought I'd post the final version of the code I used, in case anyone was curious.


```
Public Sub MySymbolFonts()

' Written for TSG member Tamara1969; creates a
' document to act as a visual reference for
' symbol fonts.

  Dim saFontArray() As String
  Dim strFonts As String
  Dim intFontCount As Integer
  Dim intCharCount As Integer
'  Dim lngCharCount As Long 'for unicode
'  Const UNICODE_UBOUND As Long = 65536

  Const ALPHA_NUMERICS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" & _
                         "abcdefghijklmnopqrstuvwxyz" & _
                         "[email protected]#$%^&*()-=_+,./;[]\<>?:{}|`~"

  strFonts = "CommercialPi BT," & _
             "Marlett," & _
             "MS Outlook," & _
             "Symbol," & _
             "UniversalMath1 BT," & _
             "Webdings," & _
             "Wingdings," & _
             "Wingdings 2," & _
             "Wingdings 3," & _
             "ZapfDingbats"

  saFontArray = Split(strFonts, ",")

  Application.ScreenUpdating = False
  With ActiveDocument
    With .Paragraphs.TabStops
      .Add InchesToPoints(1.25), wdAlignTabLeft
      .Add InchesToPoints(2.5), wdAlignTabLeft
      .Add InchesToPoints(3.75), wdAlignTabLeft
      .Add InchesToPoints(5), wdAlignTabLeft
    End With
    .Range.Font.Name = "Courier New"
  End With

' for unicode characters (pegs processor, probably causes crash)
'  With ActiveDocument.Range
'    .Font.Size = 14
'    For intFontCount = 0 To UBound(saFontArray)
'      If intFontCount > 0 Then
'        .Characters(.End).InsertBreak wdPageBreak
'      End If
'      .Characters(.End).Font.Name = "Courier New"
'      .InsertAfter "Font Name: " & saFontArray(intFontCount)
'      .InsertAfter vbCr & Chr$(9)
'      For lngCharCount = 33 To UNICODE_UBOUND
'        If ChrW(lngCharCount) Like vbNullString Then
'          Debug.Print "hit a null"
'        Else
'          .InsertAfter lngCharCount
'          .InsertAfter " is " & ChrW(lngCharCount) & Chr$(9)
'          .Characters(.End - 2).Font.Name = saFontArray(intFontCount)
'          If (lngCharCount Mod 3 = 0) Then
'            .InsertAfter vbCr & Chr$(9)
'          End If
'        End If
'      Next lngCharCount
'    Next intFontCount
'  End With

' original way (this works).
  With ActiveDocument.Range
    .Font.Size = 14
    For intFontCount = 0 To UBound(saFontArray)
      If intFontCount > 0 Then
        .Characters(.End).InsertBreak wdPageBreak
      End If
      .InsertAfter "Font Name: " & saFontArray(intFontCount) & vbCr
      For intCharCount = 1 To Len(ALPHA_NUMERICS)
        .InsertAfter Mid(ALPHA_NUMERICS, intCharCount, 1)
        .InsertAfter " is " & Mid(ALPHA_NUMERICS, intCharCount, 1) & Chr$(9)
        .Characters(.End - 2).Font.Name = saFontArray(intFontCount)
        If (intCharCount Mod 5 = 0) Then
          .InsertAfter vbCr
        End If
      Next intCharCount
    Next intFontCount
  End With
  Application.ScreenRefresh
End Sub
```
chris.


----------



## bomb #21 (Jul 1, 2005)

cristobal03 said:


> Thought I'd post the final version of the code I used, in case anyone was curious.


Personally I'm not the least bit curious. However, you should probably get some kind of medal for the amount of effort.


----------



## WhitPhil (Oct 4, 2000)

Seconded.


----------



## Zack Barresse (Jul 25, 2004)

I realize this is a little old, but ..



Tamara1969 said:


> .. Is the Character map that you are referring to the one that is in Insert Symbols?


A quick little snippet I wrote ..

http://vbaexpress.com/kb/getarticle.php?kb_id=784

HTH


----------

