如何将光标放在打开的 FileDialog 的文件列表中?
How can I put the cursor in the File List of an open FileDialog?
有没有办法控制 VBA 中的 FileDialog,使光标在打开的 FileDialog 中移动到文件列表的顶部? (光标似乎总是在 FileDialog 的文件名控件中。)
我想使用向下箭头键在打开的 FileDialog 的初始文件夹中的文件列表中移动。 (而不是使用鼠标 select 文件列表中的文件。)
按 10 次 TAB 键会将光标移动到列表的顶部,但我想自动执行该过程。据我所知,我不能使用 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
根据定义,对话框是一个阻塞调用 - 因此您不能 SendKeys
在调用 .Show
之后和用户关闭对话框之前,因为 [=36= 的下一条指令] 在 .Show
之后 运行 宁 在 对话框关闭后。
点击 10x Tab 来访问列表框控件,但对我来说似乎太过分了。
我相信您的用户会很高兴得知他们可以通过按住 Shift 以相反的方向 循环控制 ] 钥匙;在这里,我可以通过按 Shift+Tab 两次.[=14= 来访问列表框控件]
除此之外,您可以提出 Excel UserVoice 建议让 Microsoft 改变该行为,但我不会对那个保持呼吸。
有没有办法控制 VBA 中的 FileDialog,使光标在打开的 FileDialog 中移动到文件列表的顶部? (光标似乎总是在 FileDialog 的文件名控件中。)
我想使用向下箭头键在打开的 FileDialog 的初始文件夹中的文件列表中移动。 (而不是使用鼠标 select 文件列表中的文件。)
按 10 次 TAB 键会将光标移动到列表的顶部,但我想自动执行该过程。据我所知,我不能使用 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
根据定义,对话框是一个阻塞调用 - 因此您不能 SendKeys
在调用 .Show
之后和用户关闭对话框之前,因为 [=36= 的下一条指令] 在 .Show
之后 运行 宁 在 对话框关闭后。
点击 10x Tab 来访问列表框控件,但对我来说似乎太过分了。
我相信您的用户会很高兴得知他们可以通过按住 Shift 以相反的方向 循环控制 ] 钥匙;在这里,我可以通过按 Shift+Tab 两次.[=14= 来访问列表框控件]
除此之外,您可以提出 Excel UserVoice 建议让 Microsoft 改变该行为,但我不会对那个保持呼吸。