Improve company productivity with a Business Account.Sign Up

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 521
  • Last Modified:

Create dynamic list box entries on a userform for data in Excel 2007 and create word doc from it.

Hi,

I have an Excel 2007 spreadsheet with two columns of data. Column A has a letter type and Column B has a letter fragment.

What I would like to do is create a userform , in excel 2007,  which has a combox box with various letter types in it and a listbox . If you select a particular type of letter e.g. DV1 from the combobox the listbox brings up the relevant letter fragment options which you can then tick. A letter is then produced, using vba, from the options which you have selected.

Attached is a sheet with an example of the data.

Any help appreciated

Regards..
Fragment.xlsx
0
bhattar
Asked:
bhattar
  • 2
  • 2
  • 2
1 Solution
 
Joanne M. OrzechManager, Document Services CenterCommented:
Why would you begin this process in Excel when you want to create a Word letter?  Wouldn't it just be easier to create the userform in Word?
0
 
bhattarAuthor Commented:
Hi JOrzech,

The excel sheet contains all of my fragments and that is the source file. There are a large number of these and just thought it would be cleaner to keep everything in one place and dynaically create the word doc when required.

However I am open to suggestions.

Regards..

0
 
david251Commented:
Here is a simple example using your data to accomplish this.

Using your data in the above sample
-Add a reference to Word in VBA
-Create a userform
-Create a Listbox nambed ListBox1
-Create a Combobox nambed ComboBox1
-Create a button named CommandButton1
-Switch to code view and paste the following code.

I hope this helps
-David251
Dim arr
 
Private Sub CommandButton1_Click()
    Dim wdApp As New Word.Application
    Dim wdDoc As Word.Document
    Set wdDoc = wdApp.Documents.Add
    
    Dim lItem As Long
 
    For lItem = 0 To ListBox1.ListCount - 1
        If ListBox1.Selected(lItem) = True Then
            wdDoc.Content.InsertAfter ListBox1.List(lItem)
            wdDoc.Content.InsertParagraphAfter
 
        End If
    Next lItem
    wdApp.Visible = True
    Set wdDoc = Nothing
    Set wdApp = Nothing
End Sub
 
Private Sub UserForm_Initialize()
    
    arr = Range("a1:b21").Value
    'Create ComboBox1 Entries
    Dim strTemp As String
    strTemp = "|"
    For i = 2 To UBound(arr, 1)
        If InStr(strTemp, "|" & arr(i, 1) & "|") = 0 Then
            strTemp = strTemp & arr(i, 1) & "|"
            Me.ComboBox1.AddItem arr(i, 1)
        End If
    Next i
End Sub
 
 
Private Sub ComboBox1_Change()
    'Update ListBox1
    Me.ListBox1.Clear
    For i = 2 To UBound(arr, 1)
        If arr(i, 1) = Me.ComboBox1.Value Then Me.ListBox1.AddItem arr(i, 2)
    Next i
End Sub

Open in new window

0
The 14th Annual Expert Award Winners

The results are in! Meet the top members of our 2017 Expert Awards. Congratulations to all who qualified!

 
david251Commented:
BTW, ListBox1 needs to allow multiselect.

You might want to modify the code to check if the list box has anything selected before creating the word file.
0
 
Joanne M. OrzechManager, Document Services CenterCommented:
LOL - I only know how to code Word so I would imagine that if you want to create a Word letter, you would start the process in Word.  You can always copy the Excel columns and paste into Word (which automatically creates a Word data source), but it looks like you have a viable solution posted by David251....

Just let me know if I can be of any assistance in this process regarding the Word end of it :)

Joanne Orzech
MS Word MVP
EE Zone Advisor
0
 
bhattarAuthor Commented:
david251,

Sorry for not getting back to you sooner! Great soultion works a treat!

Regards..
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 2
  • 2
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now