1

Тема: Сохранения документов

Добрый день!
Качаю книги из Интернета. Переформатирую их под свою электронную книгу и сохраняю.
При сохранении каждый раз надо или копировать или набирать руками автора и название книги. Но если просмотреть Сведения о документе (свойства, Word 2007), то там уже имеются сведения и об авторе и о названии.
Вопрос: Как сделать, чтобы при сохранении в строке "Имя файла" автоматом вставлялись автор и название книги.
Может быть можно написать макрос. К сожалению, у меня на это не хватает знаний.

2

Re: Сохранения документов

Сохраните макрос в шаблон Нормал и будет вам счастье.

Sub FileSave()
  Dim sAuth As String
  Dim sTitle As String
  
  sAuth = ActiveDocument.BuiltInDocumentProperties(wdPropertyAuthor)
  sTitle = ActiveDocument.BuiltInDocumentProperties(wdPropertyTitle)
  
  'Если документ ни разу не сохранялся
  If ActiveDocument.Name <> ActiveDocument.FullName Then
    'Если Автор и Название не пустые
    If sAuth <> "" And sTitle <> "" Then
      With Application.FileDialog(msoFileDialogSaveAs)
        .InitialFileName = sAuth & " - " & sTitle
        .Show
      End With
    Else 'Если Автор и Название пустые
      Dialogs(wdDialogFileSaveAs).Execute
    End If
  Else 'Если документ уже сохранялся
    ActiveDocument.Save
  End If
End Sub
Лучше день потерять — потом за пять минут долететь!

3

Re: Сохранения документов

Большое спасибо за макрос! Все работает просто замечательно!
А нельзя ли, сюда же, добавить формат сохранения по умолчанию был PDF  smile . Что бы каждый раз не выбирать.
Заранее огромное спасибо!!!

4

Re: Сохранения документов

Можно добавить

Sub FileSave()
  Dim sAuth As String
  Dim sTitle As String
  
  sAuth = ActiveDocument.BuiltInDocumentProperties(wdPropertyAuthor)
  sTitle = ActiveDocument.BuiltInDocumentProperties(wdPropertyTitle)
  
  'Если документ ни разу не сохранялся
  If ActiveDocument.Name = ActiveDocument.FullName Then
    'Если Автор и Название не пустые
    If sAuth <> "" And sTitle <> "" Then
      With Application.FileDialog(msoFileDialogSaveAs)
        .InitialFileName = sAuth & " - " & sTitle
        .FilterIndex = 7 'Выбор PDF в списке форматов
        If Not .Show Then Exit Sub
      End With
    Else 'Если Автор и Название пустые
      Dialogs(wdDialogFileSaveAs).Execute
    End If
  Else 'Если документ уже сохранялся
    ActiveDocument.Save
  End If
End Sub
Лучше день потерять — потом за пять минут долететь!

5

Re: Сохранения документов

Большое спасибо!
Только эта запись не хочет работать.
Пришлось вместо строки  If Not .Show Then Exit Sub написать просто .Show
Как было в первом макросе. Тогда все работает отлично.
Еще раз СПАСИБО!!!

6

Re: Сохранения документов

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

7

Re: Сохранения документов

Может быть документ надо не сохранять как *.PDF. а печатать в файл как документ PDF?
Но и с первым макросом: выбирал любые форматы - ничего не сохраняется.

8

Re: Сохранения документов

Но если этот макрас переписать в таком виде, то все работает на 100%:

Sub FileSave()
  Dim sAuth As String
Dim sTitle As String

sAuth = ActiveDocument.BuiltInDocumentProperties(wdPropertyAuthor)
sTitle = ActiveDocument.BuiltInDocumentProperties(wdPropertyTitle)

   Set x = Application.FileDialog(msoFileDialogSaveAs)
       x.InitialFileName = sAuth & " - " & sTitle
       x.FilterIndex = 7 'Выбор PDF в списке форматов
       x.Show
       x.Execute
End Sub