FileDialog的InitialFileName不会显示整个文件名

时间:2019-09-30 15:38:19

标签: excel vba

因此,我正在从一个工作簿中打开一个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中,我看到了这一点:

Screenshot

如您所见,文件名被奇怪的滚动设置缩短了。该框实际上包含整个文件名,但是直到您单击它并向左滚动时才显示它。因为这使用户感到困惑,所以我试图显示整个文件名。我将不胜感激任何提示。

作为奖励,我理想上希望已经选择了推荐的文件(将其突出显示为蓝色),但这对于可用性不是必需的。

1 个答案:

答案 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似乎没有什么区别。