diff --git a/programs/oleview/En.rc b/programs/oleview/En.rc
index f5b3a28..dfb09aa 100644
--- a/programs/oleview/En.rc
+++ b/programs/oleview/En.rc
@@ -95,6 +95,7 @@
     IDS_ABOUT              "OleView - OLE/COM Object Viewer"
     IDS_ABOUTVER           "version 1.0"
     IDS_TYPELIBTITLE       "ITypeLib viewer"
+    IDS_OPEN               "Open"
 
     IDM_BIND,              "Bind to file via a File Moniker"
     IDM_TYPELIB,           "Open a TypeLib file and view the contents"
diff --git a/programs/oleview/Makefile.in b/programs/oleview/Makefile.in
index 2df5004..00fc481 100644
--- a/programs/oleview/Makefile.in
+++ b/programs/oleview/Makefile.in
@@ -4,7 +4,7 @@
 VPATH     = @srcdir@
 MODULE    = oleview.exe
 APPMODE   = -mwindows -municode
-IMPORTS   = comctl32 shell32 oleaut32 ole32 user32 advapi32 kernel32
+IMPORTS   = comdlg32 comctl32 shell32 oleaut32 ole32 user32 advapi32 kernel32
 EXTRALIBS = -luuid
 EXTRADEFS = -DUNICODE
 
diff --git a/programs/oleview/main.h b/programs/oleview/main.h
index ad200fb..689e01f 100644
--- a/programs/oleview/main.h
+++ b/programs/oleview/main.h
@@ -108,6 +108,7 @@
     HWND hTree;
     HWND hEdit;
     HWND hStatusBar;
+    WCHAR wszFileName[MAX_LOAD_STRING];
 }TYPELIB;
 
 extern GLOBALS globals;
@@ -138,7 +139,7 @@
 void ReleaseInst(HTREEITEM item);
 
 /* typelib.c */
-BOOL CreateTypeLibWindow(HINSTANCE hInst);
+BOOL CreateTypeLibWindow(HINSTANCE hInst, WCHAR *wszFileName);
 BOOL TypeLibRegisterClass(void);
 
 /* interface.c */
diff --git a/programs/oleview/oleview.c b/programs/oleview/oleview.c
index 73980b2..88ce725 100644
--- a/programs/oleview/oleview.c
+++ b/programs/oleview/oleview.c
@@ -25,6 +25,13 @@
 static WCHAR wszFormat[] = { '<','o','b','j','e','c','t','\n',' ',' ',' ',
     'c','l','a','s','s','i','d','=','\"','c','l','s','i','d',':','%','s','\"','\n',
     '>','\n','<','/','o','b','j','e','c','t','>','\0' };
+WCHAR wszFilter[] = { 'T','y','p','e','L','i','b',' ','F','i','l','e','s',' ',
+    '(','*','t','l','b',';','*','o','l','b',';','*','.','d','l','l',';',
+    '*','.','o','c','x',';','*','.','e','x','e',')','\0',
+    '*','.','t','l','b',';','*','.','o','l','b',';','*','.','d','l','l',';',
+    '*','.','o','c','x','*','.','e','x','e','\0',
+    'A','l','l',' ','F','i','l','e','s',' ','(','*','.','*',')','\0',
+    '*','.','*','\0','\0' };
 
 INT_PTR CALLBACK SysConfProc(HWND hDlgWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 {
@@ -124,6 +131,22 @@
     return FALSE;
 }
 
+void InitOpenFileName(HWND hWnd, OPENFILENAME *pofn, WCHAR *wszFilter,
+        WCHAR *wszTitle, WCHAR *wszFileName)
+{
+    memset(pofn, 0, sizeof(OPENFILENAME));
+    pofn->lStructSize = sizeof(OPENFILENAME);
+    pofn->hwndOwner = hWnd;
+    pofn->hInstance = globals.hMainInst;
+
+    pofn->lpstrTitle = wszTitle;
+    pofn->lpstrFilter = wszFilter;
+    pofn->nFilterIndex = 0;
+    pofn->lpstrFile = wszFileName;
+    pofn->nMaxFile = MAX_LOAD_STRING;
+    pofn->Flags = OFN_HIDEREADONLY;
+}
+
 void CopyClsid(HTREEITEM item)
 {
     TVITEM tvi;
@@ -380,10 +403,21 @@
                     vis ? MF_UNCHECKED : MF_CHECKED);
             ResizeChild();
             break;
+        case IDM_TYPELIB:
+            {
+            OPENFILENAME ofn;
+            static WCHAR wszTitle[MAX_LOAD_STRING];
+            static WCHAR wszName[MAX_LOAD_STRING];
+
+            LoadString(globals.hMainInst, IDS_OPEN, wszTitle, sizeof(wszTitle));
+            InitOpenFileName(hWnd, &ofn, wszFilter, wszTitle, wszName);
+            if(GetOpenFileName(&ofn)) CreateTypeLibWindow(globals.hMainInst, wszName);
+            break;
+            }
         case IDM_VIEW:
             hSelect = TreeView_GetSelection(globals.hTree);
             if(IsInterface(hSelect)) InterfaceViewer(hSelect);
-            else CreateTypeLibWindow(globals.hMainInst);
+            else CreateTypeLibWindow(globals.hMainInst, NULL);
             break;
         case IDM_EXIT:
             DestroyWindow(hWnd);
diff --git a/programs/oleview/resource.h b/programs/oleview/resource.h
index 5d7818b..73cde3d 100644
--- a/programs/oleview/resource.h
+++ b/programs/oleview/resource.h
@@ -29,6 +29,8 @@
 #define IDS_ABOUT                  20
 #define IDS_ABOUTVER               21
 
+#define IDS_OPEN                   30
+
 #define IDM_BIND                   100
 #define IDM_TYPELIB                101
 #define IDM_SYSCONF                102
diff --git a/programs/oleview/typelib.c b/programs/oleview/typelib.c
index 09275f4..3fb8689 100644
--- a/programs/oleview/typelib.c
+++ b/programs/oleview/typelib.c
@@ -30,7 +30,6 @@
 
 int PopulateTree(void)
 {
-    TVITEM tvi;
     TVINSERTSTRUCT tvis;
     ITypeLib *pTypeLib;
     ITypeInfo *pTypeInfo, *pRefTypeInfo;
@@ -64,9 +63,6 @@
     const WCHAR wszVT_BSTR[] = { 'B','S','T','R',' ','\0' };
     const WCHAR wszVT_CY[] = { 'C','U','R','R','E','N','C','Y',' ','\0' };
 
-    memset(&tvi, 0, sizeof(TVITEM));
-    tvi.hItem = TreeView_GetSelection(globals.hTree);
-
     U(tvis).item.mask = TVIF_TEXT|TVIF_CHILDREN;
     U(tvis).item.cchTextMax = MAX_LOAD_STRING;
     U(tvis).item.pszText = wszText;
@@ -74,15 +70,14 @@
     tvis.hInsertAfter = (HTREEITEM)TVI_LAST;
     tvis.hParent = TVI_ROOT;
 
-    SendMessage(globals.hTree, TVM_GETITEM, 0, (LPARAM)&tvi);
-    if(FAILED((hRes = LoadTypeLib(((ITEM_INFO*)tvi.lParam)->path, &pTypeLib))))
+    if(FAILED((hRes = LoadTypeLib(typelib.wszFileName, &pTypeLib))))
     {
         WCHAR wszMessage[MAX_LOAD_STRING];
         WCHAR wszError[MAX_LOAD_STRING];
 
         LoadString(globals.hMainInst, IDS_ERROR_LOADTYPELIB,
                 wszError, sizeof(WCHAR[MAX_LOAD_STRING]));
-        wsprintfW(wszMessage, wszError, ((ITEM_INFO*)tvi.lParam)->path, hRes);
+        wsprintfW(wszMessage, wszError, typelib.wszFileName, hRes);
         MessageBox(globals.hMainWnd, wszMessage, NULL, MB_OK|MB_ICONEXCLAMATION);
         return 1;
     }
@@ -261,11 +256,23 @@
     return TRUE;
 }
 
-BOOL CreateTypeLibWindow(HINSTANCE hInst)
+BOOL CreateTypeLibWindow(HINSTANCE hInst, WCHAR *wszFileName)
 {
     WCHAR wszTitle[MAX_LOAD_STRING];
     LoadString(hInst, IDS_TYPELIBTITLE, wszTitle, sizeof(WCHAR[MAX_LOAD_STRING]));
 
+    if(wszFileName) lstrcpyW(typelib.wszFileName, wszFileName);
+    else
+    {
+        TVITEM tvi;
+
+        memset(&tvi, 0, sizeof(TVITEM));
+        tvi.hItem = TreeView_GetSelection(globals.hTree);
+
+        SendMessage(globals.hTree, TVM_GETITEM, 0, (LPARAM)&tvi);
+        lstrcpyW(typelib.wszFileName, ((ITEM_INFO*)tvi.lParam)->path);
+    }
+
     globals.hTypeLibWnd = CreateWindow(wszTypeLib, wszTitle,
             WS_OVERLAPPEDWINDOW|WS_VISIBLE,
             CW_USEDEFAULT, CW_USEDEFAULT, 800, 600, NULL, NULL, hInst, NULL);
