Public Function GetWordPath(ByVal ProgID As String) As String
   Dim lKey As Long
   Dim lRet As Long
   Dim sClassID As String
   Dim sAns As String
   Dim lngBuffer As Long
   Dim lPos As Long

   ' Gets the ClassID
   lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE, _
          "Software\Classes\Word.Application\CLSID", 0&, _
           KEY_ALL_ACCESS, lKey)

   If lRet = 0 Then 
      lRet = RegQueryValueEx(lKey, "", 0&, REG_SZ, "", lngBuffer)
      sClassID = Space(lngBuffer)
      lRet = RegQueryValueEx(lKey, "", 0&, REG_SZ, sClassID, _
          lngBuffer)

      ' drop null-terminator
      sClassID = Left(sClassID, lngBuffer - 1) 
      RegCloseKey lKey
   End If
   
    
   ' Get AppPath
   lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE, _
        "Software\Classes\CLSID\" & sClassID & _
        "\LocalServer32", 0&, KEY_ALL_ACCESS, lKey)
 
   If lRet = 0 Then
       lRet = RegQueryValueEx(lKey, "", 0&, REG_SZ, "", lngBuffer)
       sAns = Space(lngBuffer)
       lRet = RegQueryValueEx(lKey, "", 0&, REG_SZ, sAns, _
         lngBuffer)
       sAns = Left(sAns, lngBuffer - 1)
      
       RegCloseKey lKey
   End If
    
    
   ' Sometimes the registry will return a switch 
   ' beginning with "/" e.g., "/word"
    lPos = InStr(sAns, "/")
        If lPos > 0 Then
            sAns = Trim(Left(sAns, lPos - 1))
        End If
    
    GetWordPath = sAns

End Function
