![]() |
|
|||||||
|
|
|
Thread Tools | Display Modes |
|
#1
|
|||
|
|||
|
I am new to VBA, your help is greatly appreciated.
In the attached xls file , there is a column "question type" in the worksheet "general". Now I want to populate the texts in this column to the dropdownlist entries in the docx file everytime I open it . Many thanks in advance. I found some great code in the following link. But it seems it does not offer the function of selecting the column. Import Excel List into Word Dropdown List Code is: Quote:
Last edited by ericliu24; 03-17-2022 at 04:41 AM. |
|
#2
|
||||
|
||||
|
The following should work, provided the workbook and document are in the same folder.
Code:
Option Explicit
Private strWorkbook As String
Private Const strSheet As String = "general" 'The name of the worksheet
Private oCC As ContentControl
Private Arr() As Variant
Private lRow As Long
Sub AutoOpen()
FillDropdown
End Sub
Private Sub FillDropdown()
strWorkbook = ThisDocument.Path & "\test2.xlsx"
Arr = xlFillArray(strWorkbook, strSheet)
Set oCC = ActiveDocument.SelectContentControlsByTitle("question type").Item(1)
With oCC
.LockContentControl = False
.Type = wdContentControlComboBox
.Range.Text = ""
.DropdownListEntries.Clear
.SetPlaceholderText Text:="Choose an item"
For lRow = 0 To UBound(Arr, 2)
.DropdownListEntries.Add Arr(0, lRow)
Next lRow
.LockContentControl = True
End With
Set oCC = Nothing
End Sub
Private Function xlFillArray(strWorkbook As String, _
strRange As String) As Variant
'Graham Mayor - https://www.gmayor.com - Last updated - 24 Sep 2016
Dim RS As Object
Dim CN As Object
Dim iRows As Long
strRange = strRange & "$]" 'Use this to work with a named worksheet
'strRange = strRange & "]" 'Use this to work with a named range
Set CN = CreateObject("ADODB.Connection")
'Set HDR=NO for no header row
CN.Open ConnectionString:="Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & strWorkbook & ";" & _
"Extended Properties=""Excel 12.0 Xml;HDR=YES;IMEX=1"""
Set RS = CreateObject("ADODB.Recordset")
RS.Open "SELECT * FROM [" & strRange, CN, 2, 1
With RS
.MoveLast
iRows = .RecordCount
.MoveFirst
End With
xlFillArray = RS.GetRows(iRows)
If RS.State = 1 Then RS.Close
Set RS = Nothing
If CN.State = 1 Then CN.Close
Set CN = Nothing
lbl_Exit:
Exit Function
End Function
__________________
Graham Mayor - MS MVP (Word) (2002-2019) Visit my web site for more programming tips and ready made processes www.gmayor.com |
|
#3
|
|||
|
|||
|
Many thanks!
Private Sub FillDropdown() strWorkbook = ThisDocument.Path & "\test2.xlsx" Arr = xlFillArray(strWorkbook, strSheet) a type mismatch error pops out. As I would like to be able to define the column , where shall I input the column in the code? For example, If I would like to populate the data of column B of worksheet "general", what should I do? |
|
| Thread Tools | |
| Display Modes | |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
Populate Dependent Word Dropdown List from Excel
|
Narcissus | Word VBA | 1 | 05-05-2020 02:55 PM |
Auto populate a text field based on Content Control Dropdown List
|
matthias92701 | Word VBA | 2 | 05-02-2019 03:54 PM |
| Dropdown list from a value of another cell in dynamic worksheet | Javir | Excel | 5 | 06-07-2018 02:52 AM |
| Looking to copy select cells in table using dropdown list to paste to new table in another worksheet | CaptainRetired | Excel Programming | 18 | 01-04-2018 07:22 PM |
| Populate dropdown list with data from Access table | spw4000 | Office | 0 | 02-24-2012 05:22 AM |