Как я могу получить имя файла из поля ввода «Сохранить как» (НЕ диалоговое окно файла) перед сохранением? - PullRequest
4 голосов
/ 22 марта 2019

Я пытаюсь выполнить некоторую проверку имени файла перед его сохранением.

Вот три моих сценария сохранения файлов:

  1. Файл>Сохранить
  2. Файл> Сохранить как> Просмотреть> Сохранить> 1010 *
  3. Файл> Сохранить как> Сохранить

Excel's

Дополнительная информация:

Как определено в событии Workbook_BeforeSave , параметр SaveAsUI покажет, будет лидиалоговое окно необходимо для сохранения изменений.

✓ В сценарии 1 SaveAsUI = False, поэтому я получаю имя файла из ThisWorkbook.Name

✓ В сценарии 2 SaveAsUI = True, поэтому я принудительнодиалоговое окно и получите имя файла с помощью метода GetSaveAsFilename

✗ В сценарии 3 SaveAsUI = True, но никакого промежуточного диалога вообще не требуется!Файл сразу же сохраняется под тем именем, которое введено в поле ввода.

... смешно, что я одержим этим, потому что я могу просто переопределить сценарий 3 и в любом случае вызвать диалоговое окно, но мне любопытно,Есть идеи?

Ответы [ 2 ]

1 голос
/ 22 марта 2019

Я нашел то, чего не хватало в нашем недостающем словаре: Встроенное диалоговое окно

Как объяснено здесь , нет способа получить имя файла из этого диалогового окна, пока не будет выполнено сохранение.

1 голос
/ 22 марта 2019

Я пишу это как ответ, потому что поле комментария слишком мало для него.

Я нашел упомянутую ссылку на файл в реестре:

HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Excel\User MRU\AD_2B763A186A5179F1E2C2819B76BF6FDEF3F399938D48925BE3381441F2190369\File MRU

Вы будетенужен поиск, чтобы открыть Recent file list или найти способ прочитать такую ​​запись в реестре.Один способ (но довольно сложный), команда Shell, как вы можете видеть здесь (команда командной строки):

reg query "HKCU\Software\Microsoft\Office\16.0\Excel\User MRU" /s

Запуск этой команды и анализ результатов могут помочь вам.

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