因此,我正在从一个工作簿中打开一个FileDialog
,允许用户选择和导入文件。我有一点逻辑,可以根据用户设置的标准,通过.InitialFileName
推荐特定的目录和文件。这段代码处理FileDialog
:
With objFileDialog
.InitialFileName = strIFN 'This is the relevant line
.AllowMultiSelect = False
.ButtonName = "Select"
.Title = "Please select the file containing " & whichFile
If .Show > 0 Then
End If
If (.SelectedItems.Count > 0) Then
strPath = .SelectedItems(1)
End If
End With
strIFN
包含推荐文件的路径,例如:
\\Company-Server\Users\Username\Desktop\Intern Unterlagen\Projektcontrolling\Testlauf\AK\201909_Company_Zeiteinträge_AK.xlsx
该路径工作正常,但是在打开的FileDialog
中,我看到了这一点:
如您所见,文件名被奇怪的滚动设置缩短了。该框实际上包含整个文件名,但是直到您单击它并向左滚动时才显示它。因为这使用户感到困惑,所以我试图显示整个文件名。我将不胜感激任何提示。
作为奖励,我理想上希望已经选择了推荐的文件(将其突出显示为蓝色),但这对于可用性不是必需的。
答案 0 :(得分:2)
这似乎是正常的行为,我可以在Excel 2016中很容易地复制它。虽然SendKeys
通常不受欢迎,但在这种情况下似乎很有用:
With objFileDialog
.InitialFileName = strIFN 'This is the relevant line
.AllowMultiSelect = False
.ButtonName = "Select"
.Title = "Please select the file containing " & whichFile
On Error Resume Next
SendKeys "{HOME}"
On Error GoTo 0
If .Show > 0 Then
strPath = .SelectedItems(1)
End If
End With
显示对话框时,文本光标位于文件名的末尾,并且包含文件名的文本框具有焦点。因此,这是一个黑暗的镜头,但我认为"{HOME}"
应该将光标返回到文件名的开头,就像用户按 HOME 键,并打开对话框。
注意:据我观察,是否在Wait:=True
中加上SendKeys
似乎没有什么区别。