riskypenguin
riskypenguin

Reputation: 2199

InitialFileName of FileDialog doesn't display whole file name

So, I'm opening a FileDialog from a workbook that lets the user choose and import files. I have a bit of logic that recommends a specific directory and file via .InitialFileName, depending on the criteria set by the user. This code handles the 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 contains the path of the recommended file, for example:

\\Company-Server\Users\Username\Desktop\Intern Unterlagen\Projektcontrolling\Testlauf\AK\201909_Company_Zeiteinträge_AK.xlsx

The path works fine, but in the opened FileDialog I see this:

Screenshot

As you can see, the file name is cut short by a weird scroll setting. The box does in fact contain the whole file name, but doesn't show it until you click into it and scroll to the left. As this confuses the user, I am trying to display the whole file name. I'd appreciate any tips on this.

As a bonus I would ideally want to already select the recommended file (having it highlighted in blue), but that is not essential for usability.

Upvotes: 6

Views: 1095

Answers (1)

David Zemens
David Zemens

Reputation: 53623

This appears to be the normal behavior, I can replicate it pretty easily in Excel 2016. While SendKeys is usually frowned upon, it seems to be useful for this case:

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

When the dialog is displayed, the text cursor is at the end of the filename, and the text box containing the filename has focus. So, this was a bit of a shot in the dark, but I figured that "{HOME}" ought to return the cursor to the beginning of the filename, just like it would if the user hit the HOME key with the dialog open.

Note: In my observation, it seems to make no difference whether you include Wait:=True to SendKeys.

Upvotes: 3

Related Questions