#1
|
|||
|
|||
fill in a drop-down list with filenames
Good afternoon, I would like to know if it is possible or not, how can you fill in a drop-down list with the name of the files in a folder?
Sorry for my English Thnx |
#2
|
||||
|
||||
Is there a reason for not using a file open dialogue?
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
#3
|
|||
|
|||
I wanted to make a dynamic list to be able to add more files in the folder and to be added to the list, I enclose my test file . I apologize for not knowing word vba, just beginning and they are my first macros also for my english, I only speak spanish |
#4
|
||||
|
||||
A dropdown list in Word is less dynamic than a file open dialogue, since you would need to repopulate the list every time you access it to ensure it remains current. Also, adding more files to the list wouldn't add them to the folder. To populate and keep refreshed your content control with such a list you might use code like the following in your document's 'ThisDocument' code module:
Code:
Private Sub Document_ContentControlOnEnter(ByVal CCtrl As ContentControl) Application.ScreenUpdating = False Dim strFolder As String, strFile As String, strDocNm As String strDocNm = ActiveDocument.FullName strFolder = ActiveDocument.Path strFile = Dir(strFolder & "\*.doc", vbNormal) With CCtrl .DropdownListEntries.Clear .Type = wdContentControlText .Range.Text = "" .Type = wdContentControlDropdownList While strFile <> "" If strFolder & "\" & strFile <> strDocNm Then .DropdownListEntries.Add strFile End If strFile = Dir() Wend End With Application.ScreenUpdating = True End Sub To retain the previous selection, omit: Code:
.Type = wdContentControlText .Range.Text = "" .Type = wdContentControlDropdownList
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
#5
|
|||
|
|||
thank you!!! It is functional, my idea was to add several lists for example list1, list2, list3 to the document that's why they were several folders, their method works now I just have to see the logic to be able to apply it to the different folders and files.
|
#6
|
||||
|
||||
The implementation would depend on whether you want a separate content control for each list, or all lists in the same content control.
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
#7
|
|||
|
|||
change the method if it is separately?
|
#8
|
||||
|
||||
In that case, you would need to test which content control was being used. That is easiest to do if you give each content control a title.
PS: He visitado Argentina cuatro veces (Bariloche, Calafate, El Chaltén), para caminar por los parques nacionales.
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
#9
|
|||
|
|||
Quote:
Intentare tu metodo ya que realmente era justo lo que necesitaba. Thank you very much for all your help! If you come back to Argentina do not miss the Iguazu Falls I will try your method since it really was just what I needed. Un gran abrazo! |
#10
|
||||
|
||||
I have been there, too, on both sides
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
#11
|
|||
|
|||
Thank u for helping me, thanks to your example I was able to solve the problem through tags Code:
Sub list1() Application.ScreenUpdating = False Dim strFolder$, strFile$, strDocNm$ strDocNm = ActiveDocument.FullName strFile = Dir(ActiveDocument.Path & "\list1\*.doc", vbNormal) Dim oThisdoc As Word.Document Dim oCC As ContentControl Dim oCCs As ContentControls Set oThisdoc = ActiveDocument Set oCCs = oThisdoc.SelectContentControlsByTag("List1") For Each oCC In oCCs If oCCs.Count > 0 Then With oCC .DropdownListEntries.Clear .Type = wdContentControlText .Range.Text = "" .Type = wdContentControlDropdownList While strFile <> "" If strFolder & "\" & strFile <> strDocNm Then .DropdownListEntries.Add strFile End If strFile = Dir() Wend End With Application.ScreenUpdating = True End If Next End Sub Sub list2() Application.ScreenUpdating = False Dim strFolder$, strFile$, strDocNm$ strDocNm = ActiveDocument.FullName strFile = Dir(ActiveDocument.Path & "\list2\*.doc", vbNormal) Dim oThisdoc As Word.Document Dim oCC As ContentControl Dim oCCs As ContentControls Set oThisdoc = ActiveDocument Set oCCs = oThisdoc.SelectContentControlsByTag("List2") For Each oCC In oCCs If oCCs.Count > 0 Then With oCC .DropdownListEntries.Clear .Type = wdContentControlText .Range.Text = "" .Type = wdContentControlDropdownList While strFile <> "" If strFolder & "\" & strFile <> strDocNm Then .DropdownListEntries.Add strFile End If strFile = Dir() Wend End With Application.ScreenUpdating = True End If Next End Sub Code:
Sub list_to_text() Dim oThisdoc As Word.Document Dim oCC As ContentControl Dim oCCs As ContentControls Dim sText As String Set oThisdoc = ActiveDocument Set oCCs = oThisdoc.SelectContentControlsByTag("List1") Selection.HomeKey Unit:=wdStory, Extend:=wdExtend For Each oCC In oCCs If oCCs.Count > 0 Then oCC.Range.Select oCC.Delete False sText = Application.Selection.Text End If Next ChangeFileOpenDirectory ActiveDocument.Path & "\List1\" Selection.InsertFile FileName:=sText, Range:="", ConfirmConversions:= _ False, Link:=False, Attachment:=False Selection.TypeBackspace Selection.MoveRight Unit:=wdCharacter, Count:=1 End Sub Last edited by thuriel; 11-15-2018 at 01:53 PM. |
#12
|
||||
|
||||
Try:
Code:
Private Sub Document_ContentControlOnEnter(ByVal CCtrl As ContentControl) Application.ScreenUpdating = False Dim strFolder As String, strFile As String With CCtrl .DropdownListEntries.Clear .Type = wdContentControlText .Range.Text = "" .Type = wdContentControlDropdownList Select Case .Tag Case "List1": strFolder = ActiveDocument.Path & "\list1\" Case "List2": strFolder = ActiveDocument.Path & "\list2\" Case "List3": strFolder = ActiveDocument.Path & "\list3\" End Select strFile = Dir(strFolder & "*.doc", vbNormal) While strFile <> "" .DropdownListEntries.Add strFile strFile = Dir() Wend End With Application.ScreenUpdating = True End Sub
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
#13
|
|||
|
|||
Quote:
you're the best!! This is very simplifying. |
Tags |
drop-down list |
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Drop down box list based on response to another drop down box | Phideaux | Excel | 16 | 04-13-2018 03:07 AM |
Document with drop down field for attorney. How to fill in the address etc in other fields. | ElfegoBaca | Word | 3 | 09-27-2017 09:00 AM |
How to get a Drop Down List Content Control box to fill in other areas | snips1982 | Word | 2 | 03-22-2017 03:37 AM |
Fill - White, Drop Shadow formatting in PP 2013 | dave3point0 | PowerPoint | 2 | 12-28-2015 04:23 PM |
Populate Word Drop-down list with Excel column then auto fill form fields with Excel data | Faldinio | Word VBA | 7 | 10-19-2014 06:03 AM |