InitialFileName FileDialog не отображает полное имя файла - PullRequest
1 голос
/ 30 сентября 2019

Итак, я открываю 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 Ответ

2 голосов
/ 30 сентября 2019

Это нормальное поведение, я могу довольно легко воспроизвести его в 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...