![]() |
|
![]() |
|
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 | Thread Starter | Forum | Replies | Last Post |
![]() |
Narcissus | Word VBA | 1 | 05-05-2020 02:55 PM |
![]() |
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 |