首页 > 解决方案 > FileDialog 的 InitialFileName 不显示整个文件名

问题描述

所以,我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我看到了这个:

截屏

如您所见,文件名被奇怪的滚动设置缩短了。该框实际上包含整个文件名,但在您单击它并滚动到左侧之前不会显示它。由于这使用户感到困惑,我试图显示整个文件名。我会很感激这方面的任何提示。

作为奖励,理想情况下,我希望已经选择推荐的文件(以蓝色突出显示),但这对于可用性来说并不是必需的。

标签: excelvba

解决方案


这似乎是正常行为,我可以在 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:=Trueto似乎没有区别SendKeys


推荐阅读