1

Тема: Диалоговое окно "Сохранить как" - дилема

Можно ли сохранить при помощи диалогового окна "сохранить как" файл с заданным именем, в заданном формате и кодировке. Окно нужно, дабы была возможность выбирать папку сохранения.

Мне известно, что поступать можно так:

ActiveDocument.SaveAs FileName:="Errors.txt", _
    FileFormat:=wdFormatText, Encoding:=1200

или так

With Application.FileDialog(msoFileDialogSaveAs).show 

как вариант:

With Application.FileDialog(msoFileDialogSaveAs)
 .InitialFileName = "Errors"
 .Show
End With 

А вот как бы совместить?
Может, есть какая-нибудь константа "выбрать папку сохранения", типа msoSelectFolder... smile

Заранее благодарен.

2

Re: Диалоговое окно "Сохранить как" - дилема

Вызов диалогового окна выбора папки

Sub ShowFolderDialog()
  Dim dlgFolder As FileDialog
  
  Set dlgFolder = Application.FileDialog(msoFileDialogFolderPicker)
  dlgFolder.Show
End Sub

3

Re: Диалоговое окно "Сохранить как" - дилема

adev пишет:

Вызов диалогового окна выбора папки

Спасибо. Теперь путь выцеплю. А где есть централизованная база по всем параметрам VBA? Встроенная вордовская помощь часто (особенно на константы)  выдает not found.

4

Re: Диалоговое окно "Сохранить как" - дилема

Чтобы узнать значение константы совсем не обязательно лезть в справку. Достаточно в редакторе VBA нажать правую кнопку мыши на константе и выбрать пункт "Definition". Откроется Object Browser с описанием данной константы. Также значение константы можно бысто посмотреть в Immediate Window (Ctrl+G). Нужно ввести знак вопроса, имя константы и нажать Enter, например:

?wdStartOfRangeRowNumber

даст значение 13.
Ну а по сути заданного вопроса могу сказать следующее. Для сохранения файла пользоваться диалогом выбора папки не верно и не удобно. Вы совершенно правильно начали использовать диалог сохранения файла, но не дошли до конца:

Sub test()
  Dim sName As String
  With Application.FileDialog(msoFileDialogSaveAs)
    If .Show Then sName = .SelectedItems(1) Else Exit Sub
    MsgBox sName
  End With
End Sub

В диалоге можно указать имя, но файл при этом не сохраняется(!), вы только получаете имя. А дальше уже можете сохранить файл командой ActiveDocument.SaveAs под выбранным именем

Лучше день потерять — потом за пять минут долететь!

5

Re: Диалоговое окно "Сохранить как" - дилема

viter.alex пишет:

выбрать пункт "Definition"

Век живи! Низкий поклон за совет.

viter.alex пишет:

выбора папки не верно и не удобно

В обычной ситуации - да, но я хотел, чтобы имя файла не менялось. Что, впрочем, при зрелом размышлении, не такая уж и проблема. Спасибо еще раз.
Одно маленькое но: применяя .SaveAs я задаю формат (txt) и кодировку (UTF16) (FileFormat:=wdFormatText, Encoding:=1200), но расширение соответствует тому, что выбрано в диалоговом окне (скажем .docx). Писать обработку sName?

6

Re: Диалоговое окно "Сохранить как" - дилема

Денис пишет:

…Писать обработку sName?

Конечно, писать. Там той обработки две функции:

Mid(sName, 1, InStrRev(sName, ".") - 1)

и получим полный путь к файлу без расширения.

Лучше день потерять — потом за пять минут долететь!