有没有办法控制VBA中的FileDialog,以便光标移动到打开的FileDialog中的文件列表的顶部? (光标似乎总是在FileDialog的文件名控件中。)
我想使用向下箭头键移动打开的FileDialog的初始文件夹中的文件列表。 (而不是使用鼠标在文件列表中选择文件。)
按下TAB键10次将光标移动到列表顶部,但我想自动执行该过程。最好,我可以告诉,我不能使用SendKeys - 在.Show之前或之后。所以我认为我不能以编程方式将{TAB}作为击键传递。
我在Outlook中编写代码但需要使用Excel,因为Outlook不支持FileDialog。
这取自更大的功能。
'Launch File Browser
'NOTE: Outlook actually does NOT support the FileDialog, so you need
' to hack a solution and use another Office app instead
'This uses Excel to open the FileDialog
Dim xlobj As Excel.Application
Set xlobj = New Excel.Application
With xlobj.FileDialog(msoFileDialogFilePicker)
.InitialFileName = strStartFolderPath
.Filters.Add "All files", "*.*"
.Title = "Please Select a File to Attach"
.AllowMultiSelect = True
' Try SendKeys Here? - Does NOt work
SendKeys "{TAB}"
.Show
' Try SendKeys Here? Does NOT Work because VBA waits for FileDialog
'SendKeys "{TAB}"
For i = 1 To .SelectedItems.Count
varSelectedItem = .SelectedItems(i)
objItem.Attachments.Add varSelectedItem
Next i
End With
xlobj.Quit
Set xlobj = Nothing
Set myItem = Nothing
Set objItem = Nothing
Set myolapp = Nothing
答案 0 :(得分:0)
根据定义,对话框是一个阻塞调用 - 所以你不能在调用SendKeys
之后和用户关闭对话框之前.Show
,因为下一条指令要在{{{}之后运行对话框关闭后,将运行。
点击10x Tab 进入列表框控件对我来说似乎有点过分了。
我确定您的用户可以通过按住 Shift 键来了解他们可以按相反方向循环控制 ;在这里,我可以按 Shift + Tab 两次进入列表框控件。
除此之外,你可以提出Excel UserVoice建议让微软改变这种行为,但我不会屏住呼吸。