Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.03.2009, 10:11   #1
Окоча Юра
Форумчанин
 
Регистрация: 16.02.2009
Сообщений: 122
Сообщение автоматическое пересохранение

Привет всем!! когда я пересохраняю документ, мне необходимо в имя файла каждый раз вводить сегодняшнюю дату и еще несколько ключевых слов из документа. Можно ли, чтобы при пересохранении , эти ключевые слова и сегодняшняя дата попадали в строку имени файла автоматически? Спасибо.
Юрик
Окоча Юра вне форума Ответить с цитированием
Старый 17.03.2009, 10:39   #2
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Вот так это делается. Помести процедуру в шаблон и пользуйся. Она будет вызываться при каждом сохранении файла. Также ее можно поместить в модуль ThisDocument самого докумета, если ты просто сохраняешь его копии.
Код:
Sub FileSave()
  Dim KeyWords$
  KeyWords = "ключевые слова"
  With Application.Dialogs(wdDialogFileSaveAs)
    .Name = Format(Date, "dd.MM.yyyy") & " " & KeyWords
    .Show
  End With
End Sub
Ключевые слова из документа нужно сделать закладками, чтобы к ним можно было обратиться и взять из них текст.
Например, так
Код:
KeyWords = ThisDocument.Bookmarks("Имя_закладки").Range.Text
Если процедуру поместишь в шаблон, а не в документ, то ThisDocument нужно заменить на ActiveDocument.
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 17.03.2009, 14:22   #3
Окоча Юра
Форумчанин
 
Регистрация: 16.02.2009
Сообщений: 122
По умолчанию

Стыдно признаться, но я даже не знаю куда или через что этот код вставить, как в шаблон так и в документ . Если можно пошагово - "ДЛЯ ЧАЙНИКОВ". Я обычный пользователь, с закладками я разобрался давно, но дальше...сложно. Я прикрепил файл "555". Допустим надо чтобы в строке пересохранения было такое название: експертиза (слово по умолчанию)_(чтобы здесь я мог набирать любой текст)_(сюда вставить надо закладку НомерЕкспертизи)_(а сдесь закладка ДатаНаписання)". Заранее спасибо...
Вложения
Тип файла: doc 555.doc (50.5 Кб, 23 просмотров)
Юрик
Окоча Юра вне форума Ответить с цитированием
Старый 17.03.2009, 16:47   #4
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Эх, Юра, Юра. Если бы не славный город Житомир, и ваше вкуснейшее мороженое «Империя»…

Значит по порядку.
  1. Открыли документ
  2. Жмем Alt+F11, чтобы добраться до редактора VBA.
  3. В появившемся окне слева видим нечто такое:
  4. С учетом пожеланий трудящихся макрос выглядит так:
    Код:
    Sub FileSave()
      On Error GoTo ErrorHandler
      With Application.Dialogs(wdDialogFileSaveAs)
        .Name = "експертиза_" & ThisDocument.Bookmarks("НомерЕкспертизи").Range.Text & "_" & _
          ThisDocument.Bookmarks("ДатаНаписання").Range.Text
        .Show
      End With
    ErrorHandler:
      If Err.Number <> 0 Then _
        MsgBox "Произошла ошибка при подготовке к сохранению. Описание ошибки: " & vbCr & _
          Err.Description, vbOKOnly + vbCritical, "Документ не сохранен."
    End Sub
  5. Если макрос поместить в ThisDocument, который расположен в нашем документе «555», то этот макрос будет работать только для этого документа.
  6. Но, если мы раскроем папку Microsoft Word Objects, то увидим, что там тоже есть модуль ThisDocument. Так вот, если поместить макрос туда, а в самом макросе заменить ThisDocument на ActiveDocument, то макрос будет работать для всех документов.
  7. В приложенном файле я уже все сделал. Макрос находится в документе и работает только для документа.
Лучше день потерять — потом за пять минут долететь!©

Последний раз редактировалось viter.alex; 17.03.2009 в 17:21.
viter.alex вне форума Ответить с цитированием
Старый 17.03.2009, 17:26   #5
Окоча Юра
Форумчанин
 
Регистрация: 16.02.2009
Сообщений: 122
По умолчанию

Спасибо большое!!!!
Юрик
Окоча Юра вне форума Ответить с цитированием
Старый 17.03.2009, 18:57   #6
Окоча Юра
Форумчанин
 
Регистрация: 16.02.2009
Сообщений: 122
По умолчанию

Я все сделал - макрос запустился, все сработало. Обычно я пересохраняю файл в начале, а потом во время работы периодически сохраняюсь. Но после того как я пересохранился с помощью макроса и нажав через 10 минут Shift+F12(сохранение файла) у меня снова макрос запустился макрос , всесто обычного сохранения, как этого избежать?
Юрик
Окоча Юра вне форума Ответить с цитированием
Старый 17.03.2009, 19:26   #7
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

В общем-то этого вопроса я ждал. Самый простой метод — это дописать «As» к названию макроса. Тогда он будет срабатывать при команде «Сохранить как…»
А можно организовать проверку на соответствие разным условиям: имени файла некоему шаблону, даты последнего сохранения и текущей дате и пр. Но первый метод на-а-амного проще.
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 17.03.2009, 20:48   #8
Окоча Юра
Форумчанин
 
Регистрация: 16.02.2009
Сообщений: 122
По умолчанию

С меня мороженое. Спасибо.
Юрик
Окоча Юра вне форума Ответить с цитированием
Старый 18.03.2009, 10:18   #9
Окоча Юра
Форумчанин
 
Регистрация: 16.02.2009
Сообщений: 122
По умолчанию

Привет. Помоги добить этот макрос, что добавить чтобы при пересохранении по умолчанию открывалась определенная мною папка, в которую я хотел бы сохранить документ?
Юрик
Окоча Юра вне форума Ответить с цитированием
Старый 18.03.2009, 13:45   #10
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Вот так. Вместо «C:\» пропиши полный свой путь. При указании пути в имени файла Word сам переходит в ту директорию и оставляет в поле имени только само имя. Сам этого не знал, но решил попробовать. Получилось. Бум знать.
Код:
Sub FileSaveAs()
  Dim sPath$
  sPath = "C:\"
  On Error GoTo ErrorHandler
  With Application.Dialogs(wdDialogFileSaveAs)
    .Name = sPath & "експертиза_" & ThisDocument.Bookmarks("НомерЕкспертизи").Range.Text & "_" & _
      ThisDocument.Bookmarks("ДатаНаписання").Range.Text
    .Show
  End With
ErrorHandler:
  If Err.Number <> 0 Then _
    MsgBox "Произошла ошибка при подготовке к сохранению. Описание ошибки: " & vbCr & _
      Err.Description, vbOKOnly + vbCritical, "Документ не сохранен."
End Sub
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
автоматическое нажатие кнопки. sauron99 Помощь студентам 1 29.10.2008 16:36
автоматическое нажатие кнопки. sauron99 Помощь студентам 1 29.10.2008 16:36
Автоматическое уничтожение объекта mutabor Общие вопросы Delphi 6 25.06.2008 22:25
Автоматическое перемещение Kirik JavaScript, Ajax 4 16.11.2007 17:42
Автоматическое сохранение AndreichSB Microsoft Office Access 1 03.01.2007 23:15