1

Тема: Как задать имя файла в окне "Сохранить как"

Добрый день, подскажите пожалуйста: нужно чтобы при нажатии кнопки в форме вызывалось диалоговое окно "Сохранить как" с заданным именем файла. Вызвать окно "Сохранить как" можно, а как задать в нем "Имя файла" не знаю как, потому что такого свойства для окна нет. Или может это можно как-нибудь обойти?

Dialogs(wdDialogFileSaveAs)

2

Re: Как задать имя файла в окне "Сохранить как"

akoks пишет:

Добрый день, подскажите пожалуйста: нужно чтобы при нажатии кнопки в форме вызывалось диалоговое окно "Сохранить как" с заданным именем файла. Вызвать окно "Сохранить как" можно, а как задать в нем "Имя файла" не знаю как, потому что такого свойства для окна нет. Или может это можно как-нибудь обойти?

Dialogs(wdDialogFileSaveAs)

Попробуйте использовать такой макрос:

Sub MyFileSave()
  With Dialogs(wdDialogFileSaveAs)
    .Name = "Name"
    .Show
  End With
End Sub
Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

3

Re: Как задать имя файла в окне "Сохранить как"

Попробуйте использовать такой макрос:

Sub MyFileSave()
  With Dialogs(wdDialogFileSaveAs)
    .Name = "Name"
    .Show
  End With
End Sub

Спасибо помогло. Думал что остальные параметры узнаю как задать, путем записи макрорекордером, открыв "Сохранить как"  задав нужные параметры. Так вот макрорекордер записал задание пути как:

ChangeFileOpenDirectory _
        "C:\...\"

Пробовал эту стоку вставлять в ваш код:

Sub SaveAs()    
    With Dialogs(wdDialogFileSaveAs)
        .Name = "Name"
        .Format = wdFormatDocument
        .ChangeFileOpenDirectory "C:\...\"
        .Show
    End With
End Sub

выдает ошибку "Объект не поддерживает это свойство или метод (ошибка 438)". Пробовал писать разные варианты: (FileOpenDirectory, OpenDirectory либо Directory) все равно не получается задать путь. Как же задать путь?

4

Re: Как задать имя файла в окне "Сохранить как"

Если путь более длинный, от корня, то попробуйте записать его целиком в атрибут Name:

Sub MyFileSave()
  With Dialogs(wdDialogFileSaveAs)
    .Name = "c:\Name"
    .Show
  End With
End Sub

Я проверил - у меня это работает.

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

5

Re: Как задать имя файла в окне "Сохранить как"

Alex_Gur пишет:

Если путь более длинный, от корня, то попробуйте записать его целиком в атрибут Name:

Sub MyFileSave()
  With Dialogs(wdDialogFileSaveAs)
    .Name = "c:\Name"
    .Show
  End With
End Sub

Я проверил - у меня это работает.

Спасибо тоже работает, но опять загвоздка, Имя файла у меня собирается:

.Name = Module2.Shifr & "_" & wdProp("Редакция")

Как его задать в таком случае? Пробовал по всякому, не хочет

6

Re: Как задать имя файла в окне "Сохранить как"

akoks пишет:

Спасибо тоже работает, но опять загвоздка, Имя файла у меня собирается:

.Name = Module2.Shifr & "_" & wdProp("Редакция")

Как его задать в таком случае? Пробовал по всякому, не хочет

А почему нельзя собрать так? :

.Name = "c:" + "\" + "Name"

Проверьте, какое значение принимает выражение? :

 Module2.Shifr & "_" & wdProp("Редакция")

Очень вероятно, что оно содержит недопустимые символы. Если что, не могли бы Вы выложить значение этого выражения? Какие значения принимают у Вас Module2.Shifr и wdProp("Редакция")?

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

7

Re: Как задать имя файла в окне "Сохранить как"

Alex_Gur пишет:

Проверьте, какое значение принимает выражение? :

 Module2.Shifr & "_" & wdProp("Редакция")

Очень вероятно, что оно содержит недопустимые символы. Если что, не могли бы Вы выложить значение этого выражения? Какие значения принимают у Вас Module2.Shifr и wdProp("Редакция")?

С этим значением все в порядке, работает как нужно: задает Имя файла как: "шифр документа_редакция"
А когда прописываю такой путь:

Sub SaveAs()
    With Dialogs(wdDialogFileSaveAs)
        .Name = "C:\Documents and Settings\ivanov\...\" & Module2.Shifr & "_" & wdProp("Редакция") 
        .Format = wdFormatDocument
        .Show
    End With
End Sub

то Имя определяет, а путь нет

8

Re: Как задать имя файла в окне "Сохранить как"

akoks пишет:

то Имя определяет, а путь нет

Выдает какое-нибудь сообщение типа: "отказано в доступе"?
Кстати, какая у Вас операционная система?

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

9

Re: Как задать имя файла в окне "Сохранить как"

Alex_Gur пишет:
akoks пишет:

то Имя определяет, а путь нет

Выдает какое-нибудь сообщение типа: "отказано в доступе"?
Кстати, какая у Вас операционная система?

Нет, ничего не выдает, как-будто путь и не прописан.
ОС XP sp3

10

Re: Как задать имя файла в окне "Сохранить как"

akoks пишет:

Нет, ничего не выдает, как-будто путь и не прописан.
ОС XP sp3

А такое выполняет? :

Sub SaveAs()
    With Dialogs(wdDialogFileSaveAs)
        .Name = "C:\Documents and Settings\" & Module2.Shifr & "_" & wdProp("Редакция") 
        .Format = wdFormatDocument
        .Show
    End With
End Sub

И такое? :

Sub SaveAs()
    With Dialogs(wdDialogFileSaveAs)
        .Name = "C:\" & Module2.Shifr & "_" & wdProp("Редакция") 
        .Format = wdFormatDocument
        .Show
    End With
End Sub
Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

11

Re: Как задать имя файла в окне "Сохранить как"

Alex_Gur пишет:

А такое выполняет? :

Sub SaveAs()
    With Dialogs(wdDialogFileSaveAs)
        .Name = "C:\Documents and Settings\" & Module2.Shifr & "_" & wdProp("Редакция") 
        .Format = wdFormatDocument
        .Show
    End With
End Sub

И такое? :

Sub SaveAs()
    With Dialogs(wdDialogFileSaveAs)
        .Name = "C:\" & Module2.Shifr & "_" & wdProp("Редакция") 
        .Format = wdFormatDocument
        .Show
    End With
End Sub

Нет, имя определяет правильно, а путь не видит

12

Re: Как задать имя файла в окне "Сохранить как"

akoks пишет:
Alex_Gur пишет:

А такое выполняет? :

Sub SaveAs()
    With Dialogs(wdDialogFileSaveAs)
        .Name = "C:\Documents and Settings\" & Module2.Shifr & "_" & wdProp("Редакция") 
        .Format = wdFormatDocument
        .Show
    End With
End Sub

И такое? :

Sub SaveAs()
    With Dialogs(wdDialogFileSaveAs)
        .Name = "C:\" & Module2.Shifr & "_" & wdProp("Редакция") 
        .Format = wdFormatDocument
        .Show
    End With
End Sub

Нет, имя определяет правильно, а путь не видит

И даже "C:\" не видит?

А "D:\" видит? :

Sub SaveAs()
    With Dialogs(wdDialogFileSaveAs)
        .Name = "D:\" & Module2.Shifr & "_" & wdProp("Редакция") 
        .Format = wdFormatDocument
        .Show
    End With
End Sub
Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

13

Re: Как задать имя файла в окне "Сохранить как"

Alex_Gur пишет:

А "D:\" видит? :

Sub SaveAs()
    With Dialogs(wdDialogFileSaveAs)
        .Name = "D:\" & Module2.Shifr & "_" & wdProp("Редакция") 
        .Format = wdFormatDocument
        .Show
    End With
End Sub

да нет, ничего не происходит

14

Re: Как задать имя файла в окне "Сохранить как"

И последняя попытка:

Sub SaveAs()
    With Dialogs(wdDialogFileSaveAs)
        .Name = "C:\" & "Name"
        .Format = wdFormatDocument
        .Show
    End With
End Sub

Так путь виден?

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

15

Re: Как задать имя файла в окне "Сохранить как"

Alex_Gur пишет:

И последняя попытка:

Sub SaveAs()
    With Dialogs(wdDialogFileSaveAs)
        .Name = "C:\" & "Name"
        .Format = wdFormatDocument
        .Show
    End With
End Sub

Так путь виден?

и так нет, если имя убираю, и остается один путь, то видит

16

Re: Как задать имя файла в окне "Сохранить как"

akoks пишет:
Alex_Gur пишет:

И последняя попытка:

Sub SaveAs()
    With Dialogs(wdDialogFileSaveAs)
        .Name = "C:\" & "Name"
        .Format = wdFormatDocument
        .Show
    End With
End Sub

Так путь виден?

и так нет, если имя убираю, и остается один путь, то видит

В таком случае могу только предложить выложить Ваш файл. Я могу протестировать его на своем Word'е.

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

17

Re: Как задать имя файла в окне "Сохранить как"

Alex_Gur пишет:

В таком случае могу только предложить выложить Ваш файл. Я могу протестировать его на своем Word'е.

Александр спасибо, вроде бы разобрался: при открытии нового документа на основе шаблона - работает - задает путь. А я проверял в самом шаблоне,  путь всегда был в папку "Шаблоны". Еще подскажите пожалуйста: в той же форме при нажатии кнопки "Применить" выполнялись другие процедуры:

Private Sub CommandButton2_Click()
    Set wdProp = ActiveDocument.CustomDocumentProperties
    SaveProp
    If wdProp("Редакция") > 0 Then NewMacros.TableRegistrationChanges   'Если Редакция больше 0, то выполняется вставка таблиц регистрации изменений
    Module2.Checks  'проверяет все флажки заданным условиям
    Module2.FamiliyaGIPa    'выполняет вставку фамилии ГИПа в основные надписи, выбранную или указанную в cmbGIPs
    Module2.Shifr   'Выполняет сборку шифра (Обозначение документа)
    Module2.SaveAs  'вызывает окно "Сохранить как", а Имя файла задает как: Shifr_Редакция
    UserForm1.hide
End Sub

После вставки процедуры SaveAs стало так: например, я поменял нужные значения в форме, нажимаю "Применить", сначала вылазит окно "Сохранить как", если в нем нажму Сохранить - произойдет сохранение, но все остальные процедуры не выполняются (т.е. сохраняется без внесенных изменений). А если в окне "Сохранить как" нажму Отмена, то все процедуры выполняются как надо. Я думал что команды будут выполняться по порядку - как написаны (т.е. сохранение будет в последнюю очередь, после внесения всех изменений в документ), но это не так. Как это можно исправить?

18

Re: Как задать имя файла в окне "Сохранить как"

Все-таки было бы лучше выложить сам документ.

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

19

Re: Как задать имя файла в окне "Сохранить как"

Alex_Gur пишет:

Все-таки было бы лучше выложить сам документ.

Post's attachments

AAA-00-Q.W.E.R-ПЗ.АЗ_0 тест.doc 199.5 Кб, 1 скачиваний с 2015-03-24 

You don't have the permssions to download the attachments of this post.

20

Re: Как задать имя файла в окне "Сохранить как"

akoks пишет:
Alex_Gur пишет:

Все-таки было бы лучше выложить сам документ.

К сожалению, макросов в файле не увидел.
Судя, по предыдущей переписке, в файле должны быть какие-то кнопки и, по крайней мере, два программных модуля. Ничего из этого я не нашел.

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

21

Re: Как задать имя файла в окне "Сохранить как"

Alex_Gur пишет:

К сожалению, макросов в файле не увидел.
Судя, по предыдущей переписке, в файле должны быть какие-то кнопки и, по крайней мере, два программных модуля. Ничего из этого я не нашел.

Да Александр, по незнанию выложил сам документ, а не шаблон. Вчера мне подсказали, в чем дело, задача решена. Спасибо.

22

Re: Как задать имя файла в окне "Сохранить как"

akoks пишет:

Вчера мне подсказали, в чем дело, задача решена. Спасибо.

Поделитесь, пожалуйста, решением задачи. smile

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

23

Re: Как задать имя файла в окне "Сохранить как"

Alex_Gur пишет:

Поделитесь, пожалуйста, решением задачи. smile

Как оказалось, я не задал команду обновления полей для кнопки, поэтому никакие изменения и не вносились в документ и соответственно шла процедура Сохранить как. Добавил процедуру обновления полей, прописал перед SaveAs, заработало как надо.

24

Re: Как задать имя файла в окне "Сохранить как"

Подскажите еще пожалуйста, как отследить изменение Имени файла? Немного переделал код:

Sub SaveAs()    'вызывает окно "Сохранить как" и использует шифр_редакция - как имя документа
    Set wdProp = ActiveDocument.CustomDocumentProperties
    strFileName = Module2.Shifr & "_" & wdProp("Редакция")
    With Dialogs(wdDialogFileSaveAs)
        .Name = strFileName 'задает имя документа - как собранный шифр и номер редакции
        .Format = wdFormatDocument
        .Show
    End With
End Sub

сама функция Shifr:

Function Shifr() 'сборка шифра (Обозначения документа) из значений полей "Комплекс"-"Том"-"РазделПД"."Марка"
    Set wdProp = ActiveDocument.CustomDocumentProperties    '? присваиваем переменной значения свойств активного документа
    Shifr = wdProp("Комплекс") & "-" & wdProp("Том №") & "-" & UserForm1.cmbSectionPD.Text & "." & UserForm1.cmbMark.Text    'задаем значение переменной сборки шифра
End Function

Нужно, чтобы эта процедура вызывалась когда изменяется переменная strFileName ( например, когда задаются новые значения свойству "Редакция"), и Имя файла уже будет другим. Как это можно сделать? Или как задать условие изменения переменной?

25

Re: Как задать имя файла в окне "Сохранить как"

akoks пишет:

Подскажите еще пожалуйста, как отследить изменение Имени файла? Немного переделал код:

Sub SaveAs()    'вызывает окно "Сохранить как" и использует шифр_редакция - как имя документа
    Set wdProp = ActiveDocument.CustomDocumentProperties
    strFileName = Module2.Shifr & "_" & wdProp("Редакция")
    With Dialogs(wdDialogFileSaveAs)
        .Name = strFileName 'задает имя документа - как собранный шифр и номер редакции
        .Format = wdFormatDocument
        .Show
    End With
End Sub

сама функция Shifr:

Function Shifr() 'сборка шифра (Обозначения документа) из значений полей "Комплекс"-"Том"-"РазделПД"."Марка"
    Set wdProp = ActiveDocument.CustomDocumentProperties    '? присваиваем переменной значения свойств активного документа
    Shifr = wdProp("Комплекс") & "-" & wdProp("Том №") & "-" & UserForm1.cmbSectionPD.Text & "." & UserForm1.cmbMark.Text    'задаем значение переменной сборки шифра
End Function

Нужно, чтобы эта процедура вызывалась когда изменяется переменная strFileName ( например, когда задаются новые значения свойству "Редакция"), и Имя файла уже будет другим. Как это можно сделать? Или как задать условие изменения переменной?

Нужно чтобы окно Сохранить как появлялось только при изменении Имени файла

26

Re: Как задать имя файла в окне "Сохранить как"

Я бы создал глобальную переменную и хранил предыдущее значение имени файла в этой переменной.
Перед выводом на экран окна SaveAs текущее имя файла сравнивается со значением этой переменной.

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

27

Re: Как задать имя файла в окне "Сохранить как"

Alex_Gur пишет:

Я бы создал глобальную переменную и хранил предыдущее значение имени файла в этой переменной.
Перед выводом на экран окна SaveAs текущее имя файла сравнивается со значением этой переменной.

Спасибо, обдумывал как реализовать ваш совет и нашел такое свойство (или как правильно? незнаю) ActiveDocument.Name. Получилось создать такое условие:

If ActiveDocument.Name <> strFileName & ".doc" Then Module2.SaveAs

28

Re: Как задать имя файла в окне "Сохранить как"

akoks пишет:
Alex_Gur пишет:

Я бы создал глобальную переменную и хранил предыдущее значение имени файла в этой переменной.
Перед выводом на экран окна SaveAs текущее имя файла сравнивается со значением этой переменной.

Спасибо, обдумывал как реализовать ваш совет и нашел такое свойство (или как правильно? незнаю) ActiveDocument.Name. Получилось создать такое условие:

If ActiveDocument.Name <> strFileName & ".doc" Then Module2.SaveAs

Верно.
Имя файла и путь к текущей папке:

Public Sub NameAndPath()
    MsgBox ActiveDocument.Name
    MsgBox ActiveDocument.Path
End Sub
Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

29

Re: Как задать имя файла в окне "Сохранить как"

Простите за то,  что вмешиваюсь в длинный разговор  tongue
Это  окно всегда загружает путь по умолчанию, если он не задан
Если пусть по умолчанию находится на диске С (обычно где-то  в общих документах), то даже указанный путь на диске D может быть не найден.

Перед вызовом окна меняйте диск по умолчанию и директорию. Например, так...

    ChDrive Left(CurrentProject.Path, 1)
    ChDir CurrentProject.Path & "\версии"

Также ошибка может быть, если указанная папке не существует. Я бы написал одтельную процедуру для проверки наличия пути и автоматического создания папки.

А для полного счастья выбранный путь можно записать в статическую переменную, чтобы при следующем открытии диалогового окна, открылось то же размещение.


К стати: вот возможные настройки диалога

'заголовок диалогового окна
        .Title = "Возвращение к старой версии"

        'название кнопки выбора
        .ButtonName = "Выбрать"

        'фильтр
        .Filters.Clear
        .Filters.Add "сохранённые версии", "*.accdb*", 1

        'представление (список, эскизы, таблица и т.п.)
        .InitialView = msoFileDialogViewList 'список

        'разрешение выбирать несколько файлов
        .AllowMultiSelect = False