Public Sub MAIN() Dim pattern$ Dim Ecco Dim Continue Dim n Dim pbID$ Dim iList$ Dim NumItems Dim ans Dim i Dim temp$ Dim j Dim Pos Dim First$ Dim Last$ Dim cmd$ Dim Company$ Dim Address1$ Dim Address2$ Dim City$ Dim State$ Dim Zip$ Dim Work$ Dim Fax$ Dim FaxOnly Dim dr As Object Dim d1 As Object ReDim ListBox1__$(10) ReDim ComboBox__$(27) ReDim hItem__(10) Dim Address$ ' ----------------------------------------------------------------- ' Get the current selection ' ----------------------------------------------------------------- pattern$ = WordBasic.[Selection$]() ' ----------------------------------------------------------------- ' Start a DDE Conversation with ECCO ' ----------------------------------------------------------------- Ecco = WordBasic.DDEInitiate("Ecco", "Ecco") If Ecco = 0 Then End Continue = 1 While Continue ' ----------------------------------------------------------------- ' Do the dialog thing ' ----------------------------------------------------------------- WordBasic.BeginDialog 426, 70, "ECCO - Case Sensitive Search" WordBasic.TextBox 15, 31, 292, 18, "TextBox" WordBasic.OKButton 327, 7, 88, 21 WordBasic.CancelButton 327, 35, 88, 21 WordBasic.Text 16, 15, 85, 13, "Search for:" WordBasic.EndDialog Set dr = WordBasic.CurValues.UserDialog Set d1 = WordBasic.CurValues.UserDialog d1.TextBox = pattern$ n = WordBasic.Dialog.UserDialog(d1) If n = 0 Then GoTo userCanceled System.Cursor = wdCursorWait WordBasic.CurValues.UserDialog d1 pattern$ = d1.TextBox ' ----------------------------------------------------------------- ' Get all the items in the PhoneBook folder ' ----------------------------------------------------------------- pbID$ = WordBasic.[DDERequest$](Ecco, "GetFoldersByName,PhoneBook") iList$ = WordBasic.[DDERequest$](Ecco, "GetFolderItems," + pbID$ + ",ia,IC," + pattern$) NumItems = countItems(iList$) If iList$ = "" Then WordBasic.Beep ans = WordBasic.MsgBox("Please try again.", UCase(pattern$) + " Not Found!", 64) Else Continue = 0 ReDim ListBox1__$(NumItems) ReDim hItem__(NumItems) ' iList$ returns ID numbers of matching items For i = 0 To NumItems - 1 temp$ = getField$(iList$, i + 1) hItem__(i) = WordBasic.Val(temp$) ListBox1__$(i) = stripField$(WordBasic.[DDERequest$](Ecco, "GetItemText," + temp$)) Next i ' -------------------------------------------------------------- ' Second Dialog Thing ' -------------------------------------------------------------- WordBasic.BeginDialog 426, 152, "Ecco PhoneBook" WordBasic.Text 10, 12, 136, 13, "Phone Book Item:" WordBasic.ListBox 10, 28, 404, 84, ListBox1__$(), "ListBox1" WordBasic.OKButton 42, 121, 88, 21 WordBasic.CancelButton 166, 121, 88, 21 ' WordBasic.PushButton 288, 121, 88, 21, "&LookUp", "LookUp" ' This was changed from a lookup to Fax only on 5/17/00 by DSL ' also added FaxOnly condition for lookup loop WordBasic.PushButton 288, 121, 88, 21, "&Fax Only", "FaxOnly" WordBasic.EndDialog Set dr = WordBasic.CurValues.UserDialog Set d1 = WordBasic.CurValues.UserDialog n = WordBasic.Dialog.UserDialog(dr) If n = 0 Then GoTo userCanceled If n = -1 Then Continue = 0 If n = 1 Then Continue = 0 FaxOnly = True End If End If Wend ' ----------------------------------------------------------------- ' Get the user's selection ' ----------------------------------------------------------------- WordBasic.CurValues.UserDialog dr j = dr.ListBox1 Address$ = ListBox1__$(j) ' ----------------------------------------------------------------- ' Re-order to Firstname LastName ' ----------------------------------------------------------------- If InStr(Address$, ",") Then Pos = InStr(Address$, ",") First$ = WordBasic.[Right$](Address$, Len(Address$) - Pos - 1) Last$ = WordBasic.[Left$](Address$, Pos - 1) Address$ = WordBasic.[Right$](Address$, Len(Address$) - Pos - 1) + " " + WordBasic.[Left$](Address$, Pos - 1) End If ' ----------------------------------------------------------------- ' Append the address: ' 117 = Company ' 118 = Address 1 ' 119 = City ' 120 = State ' 121 = Zip ' 122 = Country ' 123 = Work # ' 124 = Home # ' 125 = Fax # ' 126 = Cell # ' 127 = Alt # ' 133 = Address 2 ' 136 = Mr/Mrs ' ----------------------------------------------------------------- cmd$ = "GetFolderValues," + Mid(Str(hItem__(j)), 2) + Chr(13) ' Company temp$ = stripField$(WordBasic.[DDERequest$](Ecco, cmd$ + "117")) Company$ = temp$ If temp$ <> "" Then Address$ = Address$ + Chr(13) + temp$ ' Address 1 temp$ = stripField$(WordBasic.[DDERequest$](Ecco, cmd$ + "118")) Address1$ = temp$ If temp$ <> "" Then Address$ = Address$ + Chr(13) + temp$ ' Address 2 temp$ = stripField$(WordBasic.[DDERequest$](Ecco, cmd$ + "133")) Address2$ = temp$ If temp$ <> "" Then Address$ = Address$ + Chr(13) + temp$ ' City temp$ = stripField$(WordBasic.[DDERequest$](Ecco, cmd$ + "119")) City$ = temp$ If temp$ <> "" Then Address$ = Address$ + Chr(13) + temp$ ' State temp$ = stripField$(WordBasic.[DDERequest$](Ecco, cmd$ + "120")) State$ = temp$ If temp$ <> "" Then Address$ = Address$ + ", " + temp$ ' Zip Code temp$ = stripField$(WordBasic.[DDERequest$](Ecco, cmd$ + "121")) Zip$ = temp$ If temp$ <> "" Then Address$ = Address$ + " " + temp$ ' Country temp$ = stripField$(WordBasic.[DDERequest$](Ecco, cmd$ + "122")) If temp$ <> "" Then Address$ = Address$ + Chr(13) + temp$ Work$ = stripField$(WordBasic.[DDERequest$](Ecco, cmd$ + "123")) Fax$ = stripField$(WordBasic.[DDERequest$](Ecco, cmd$ + "125")) If FaxOnly Then If Fax$ = "" Then MsgBox "Fax number is blank!", vbExclamation, "Oh, so sorry, neh?" Else WordBasic.WW2_Insert Fax$ End If Else WordBasic.WW2_Insert Address$ End If userCanceled: If Ecco <> 0 Then WordBasic.DDETerminate Ecco End Sub ' ----------------------------------------------------------------- ' CountItems ' Params: Takes a CSV string ' Returns: The number of items in the string ' Notes: Get's confused by imbedded commas ' ----------------------------------------------------------------- Private Function countItems(items$) Dim tempList$ Dim found Dim ct tempList$ = items$ found = 1 ct = 1 While found <> 0 found = InStr(tempList$, ",") If found <> 0 Then ct = ct + 1 tempList$ = Mid(tempList$, found + 1) End If Wend countItems = ct End Function ' ----------------------------------------------------------------- ' getField() ' Syntax: getField( list$, itemNum ) ' Params: Takes a CSV string and an index to the item to get ' Returns: The item specified by itemNum ' Notes: Get's confused by imbedded commas ' ----------------------------------------------------------------- Private Function getField$(list$, element) Dim CSV$ Dim index_ Dim comma CSV$ = list$ index_ = element While index_ > 1 comma = InStr(CSV$, ",") If comma = 0 Then CSV$ = "" Else CSV$ = Mid(CSV$, comma + 1) End If index_ = index_ - 1 Wend comma = InStr(CSV$, ",") If comma > 0 Then CSV$ = WordBasic.[Left$](CSV$, comma - 1) End If getField$ = stripField$(CSV$) End Function ' ----------------------------------------------------------------- ' stripField$() ' Syntax: getField( field$ ) ' Takes a string and removes quotes from it ' ----------------------------------------------------------------- Private Function stripField$(field_$) Dim result$ result$ = field_$ If WordBasic.[Left$](result$, 1) = Chr(34) Then result$ = Mid(result$, 2) If WordBasic.[Right$](result$, 1) = Chr(34) Then result$ = WordBasic.[Left$](result$, Len(result$) - 1) stripField$ = result$ End Function