			Function OpenABW()
			
				'define local variables used in this method
				Dim objAddrBkWrap
				Dim objContacts
				Dim objABWOp
				Dim objContact
				
				'Initialize variables for the messages displayed to the user during the contact importing process
				const L_NeedSharePointAddrBook_Text = "To import contacts, you must have an Address Book compatible with Windows SharePoint Services and you must have Internet Explorer 5.0 or greater."
				const L_SelectUsers_Text = "Select Users to Import"
				const L_Add_Text = "Add"
				
				'Initialize the return value to an be an emptystring
				OpenABW = ""
				
				'Turn on our simple error handling (which is essentially disabling errors from being raised to the browser)
				On Error Resume Next

				'Create an instance of the Sharepoint Address Book Import component, which is defined in Msosvabw.dll			    
				Set objAddrBkWrap = CreateObject("MsSvAbw.AddrBookWrapper")			    


				If not IsObject(objAddrBkWrap) then
					
					'We don't have a valid object, so tell the user the import couldn't be performed
					MsgBox L_NeedSharePointAddrBook_Text
					OpenABW = ""

				Else
					
					'Using the new Sharepoint Address Book Import object, prompt the user to select some entries (Contacts)
					'...which are returned in the objContacts collection variable
					'objABWOp = objAddrBkWrap.AddressBook(, 1, , , , objContacts, , , True)
					objABWOp = objAddrBkWrap.AddressBook(L_SelectUsers_Text&"", 1, L_Add_Text&"", "", "", objContacts, Nothing, Nothing, True)
					
					'Display the list of selected Address Book Entries - for debugging purposes					
					'call window.alert("objContacts.count: " + cstr(objContacts.count))
					
					'if we have a valid return value from the previous method, then process the selections
					If objABWOp <> 0 then
						OpenABW = ""
					Else
						'Process the selected Address Book Entries by iterating through them and building an XML document
						'...containing all of the selected Contacts and their information.  
						OpenABW = ProcessContacts(objContacts)
					End If
					    
				End If

				'turn off our "On Error Resume Next" error handling
				On Error GoTo 0
			End Function


			Function EnsureImport()
				'This method creates an instance of the SharePoint.SpreadsheetLauncher component to ensure the 
				'...presence and availability of the component

				Dim objEnsureImport

				'Initialize the return value to false (0)			      
				EnsureImport = 0
					
				'Turn on our simple error handling (which is essentially disabling errors from being raised to the browser)
				On Error Resume Next
					
				'The Sample in the SDK indicates that you should use the ProgID "SharePoint.SpreadsheetLauncher.1"
				'...however, WSS clearly uses the ProgID without specifying the version number.
				'Set objEnsureImport = CreateObject("SharePoint.SpreadsheetLauncher.1")
				Set objEnsureImport = CreateObject("SharePoint.SpreadsheetLauncher")

				'Return whether or not we can do the import			    
				if not IsObject(objEnsureImport) then
					EnsureImport = -1
				else
					objEnsureImport.EnsureImport()
				end if
					
				'turn off our "On Error Resume Next" error handling
				On Error GoTo 0
			End Function

