Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Сообщений [ 21 ]
- Зарегистрирован: 26.06.2013
- Сообщений: 15
Тема: Word - сохранение файла
Нужно обработать тьму read-only файлов по схеме: открыть файл > применить макрос > задать имя > сохранить > (автоматическое закрытие). Следующий файл.
В самом макросе ничего сложного и интересного нет (там обычное выделение и отступы). Вся фишка в том, что файлы "только для чтения" - следовательно, и все изменения нужно сохранять в новом файле под новым именем. В принципе, мой макрос почти так и делает:
Sub mymacro()
...
Application.Quit
End Sub
Т.е. по завершении всех операций макрос пытается завершить приложение. Мне помогли частично довести до ума требуемое, но не совсем. Я нажимаю кнопку, к которой привязан макрос, но потом, вместо самого диалога сохранения, вылетает сначала запрос о сохранении:
Как мне обойти это и сделать так, чтобы выходило сразу окно сохранения:
???
- alexan0308
- Заблокирован
- Неактивен
- Зарегистрирован: 18.03.2013
- Сообщений: 39
- Поблагодарили: 7
Re: Word - сохранение файла
torry пишет:Я нажимаю кнопку, к которой привязан макрос, но потом, вместо самого диалога сохранения, вылетает сначала запрос о сохранении:
Долго не мог понять проблему, разглядывая эту бледно-розовую картинку.
Application.DisplayAlerts = False, не?
- alexan0308
- Заблокирован
- Неактивен
- Зарегистрирован: 18.03.2013
- Сообщений: 39
- Поблагодарили: 7
Re: Word - сохранение файла
Сначала это увидел и долго спросонья думал как это сообщение у него могло вылезти
- Зарегистрирован: 26.06.2013
- Сообщений: 15
Re: Word - сохранение файла
С кодом:
Sub mymacro()
Application.DisplayAlerts = False
...
Application.Quit
End Sub
Всё равно вылетает это:
А если прописать так:
Sub mymacro()
Application.DisplayAlerts = False
...
ActiveDocument.Close savechanges:=True
Application.Quit
End Sub
То в ответ получаю это:
p.s.
А что, кстати, смешного-то в моём сообщении и скриншоте?
- aap77
- генерал-полковник
- Неактивен
- Зарегистрирован: 12.09.2011
- Сообщений: 925
- Поблагодарили: 243
- За сообщение: 1
Re: Word - сохранение файла
Вот вполне работоспособный макрос на сохранение и закрытие:
Sub mymacro()
Dim FD As FileDialog
…
…
Set FD = Application.FileDialog(msoFileDialogSaveAs)
FD.Show
ActiveDocument.SaveAs FD.SelectedItems(1)
ActiveDocument.Close 0
End Sub
Вообще-то макрос должен работать циклом, а уже по завершении его ставить
- alexan0308
- Заблокирован
- Неактивен
- Зарегистрирован: 18.03.2013
- Сообщений: 39
- Поблагодарили: 7
Re: Word - сохранение файла
torry пишет:p.s.
А что, кстати, смешного-то в моём сообщении и скриншоте?
там вначале другая картинка была...
странно, а сохраняешь говоришь под другим именем?
- Зарегистрирован: 26.06.2013
- Сообщений: 15
Re: Word - сохранение файла
aap77, почти. Только сохраняет по умолчанию в формате docx (т.е. 2007), а мне нужно в формате doc (т.е. 97-2003). Я выставил в настройках соответствующую опцию:
потом перезапустил приложение, но предложенный вами вариант всё равно упорно предлагает сохранить в docx:
alexan0308, имя файла на скриншотах, разумеется, затёрто. Чтобы не отвлекать драгоценное внимание знатоков ненужными деталями
- aap77
- генерал-полковник
- Неактивен
- Зарегистрирован: 12.09.2011
- Сообщений: 925
- Поблагодарили: 243
- За сообщение: 1
Re: Word - сохранение файла
Вот код сохраняющий в 2003:
Sub mymacro()
Dim FD As FileDialog
Set FD = Application.FileDialog(msoFileDialogSaveAs)
FD.FilterIndex = 3
FD.Show
ActiveDocument.SaveAs FD.SelectedItems(1)
ActiveDocument.Close 0
End Sub
- Зарегистрирован: 26.06.2013
- Сообщений: 15
Re: Word - сохранение файла
aap77, огромное человеческое спасибо, помогло!!!
- aap77
- генерал-полковник
- Неактивен
- Зарегистрирован: 12.09.2011
- Сообщений: 925
- Поблагодарили: 243
Re: Word - сохранение файла
- Зарегистрирован: 26.06.2013
- Сообщений: 15
Re: Word - сохранение файла
Последний каприз
Мой макрос копирует несколько слов из одной строки. Которые я потом впоследствии и использую в качестве нового имени файла.
Теперь мой макрос со всеми вашими дополнениями делает следующее - я открываю файл, применяю макрос, открывается окно сохранения, я жму "Ctrl + V", потом жму "Сохранить".
Вопрос: а можно ли "Ctrl + V" нажимать как-то программно? Т.е. чтобы SaveDialog открывался и в строку "Имя файла" вставлял содержимое буфера обмена?
- Зарегистрирован: 26.06.2013
- Сообщений: 15
Re: Word - сохранение файла
Я прошу прощения за свою наглость, конечно, просто пытаюсь сэкономить каждый клик в каждом файле, а то файлов слишком уж много
- aap77
- генерал-полковник
- Неактивен
- Зарегистрирован: 12.09.2011
- Сообщений: 925
- Поблагодарили: 243
Re: Word - сохранение файла
torry пишет:Последний каприз
Вопрос: а можно ли "Ctrl + V" нажимать как-то программно? Т.е. чтобы SaveDialog открывался и в строку "Имя файла" вставлял содержимое буфера обмена?
Возможно все. По какому принципу вы выделяете слова для имени файла?
- Зарегистрирован: 26.06.2013
- Сообщений: 15
Re: Word - сохранение файла
В моём макросе выделение текста записано так:
Selection.MoveDown Unit:=wdLine, Count:=12
Selection.MoveDown Unit:=wdLine, Count:=9, Extend:=wdExtend
Выделяю слова на 12-й строке, но т.к. количество слов заранее неизвестно, то приходится делать так: ставлю курсор в нужную позицию на строке, зажимаю Shift, нажимаю клавишу "Вниз" (таким образом выделяется вся 12-ая строка), потом, зажав Ctrl и нажимая клавишу "Влево" убираю выделение с 13-й строки до тех пор, пока курсор не окажется на 12-й строке:
Как-то так.
- aap77
- генерал-полковник
- Неактивен
- Зарегистрирован: 12.09.2011
- Сообщений: 925
- Поблагодарили: 243
- За сообщение: 1
Re: Word - сохранение файла
Тогда код будет такой:
Sub mymacro()
Dim FD As FileDialog
Set FD = Application.FileDialog(msoFileDialogSaveAs)
FD.FilterIndex = 3
FD.InitialFileName = Selection.Text
FD.Show
ActiveDocument.SaveAs FD.SelectedItems(1)
ActiveDocument.Close 0
End Sub
Где Selection.Text выделенный в документе текст как имя файла. Копировать его не надо
- Зарегистрирован: 26.06.2013
- Сообщений: 15
Re: Word - сохранение файла
Блин, это просто сказка какая-то, чего ж я раньше-то сюда не обратился, балбес!
aap77, спасибо огромное ещё раз!!!
Последнее только желание к золотой рыбке у старика осталось, но я сомневаюсь, что это вообще в принципе выполнимо средствами MSO. Допустим, я нахожусь в каталоге, в нём без малого миллион файлов, я нахожу нужный файл, открываю и макросом беру из него инфу в буфер. Потом этот файл удаляю за ненадобностью. Теперь моё желание: в макрос ворда нельзя записать, чтобы открытый файл удалялся в корзину сразу же после его закрытия?
- aap77
- генерал-полковник
- Неактивен
- Зарегистрирован: 12.09.2011
- Сообщений: 925
- Поблагодарили: 243
Re: Word - сохранение файла
Можно. А куда потом инфа из буфера обмена уходит?
- aap77
- генерал-полковник
- Неактивен
- Зарегистрирован: 12.09.2011
- Сообщений: 925
- Поблагодарили: 243
Re: Word - сохранение файла
Я так понял, что мы сохраняем файл под новым именем, а файл со старым именем удаляем?
- aap77
- генерал-полковник
- Неактивен
- Зарегистрирован: 12.09.2011
- Сообщений: 925
- Поблагодарили: 243
- За сообщение: 1
Re: Word - сохранение файла
Если я все правильно понял, то для работы макроса нужно в редакторе VBA в меню Tools-->Reference выделить галочкой блок Microsoft Scripting Runtime и код будет таков:
Sub mymacro()
Dim FD As FileDialog
Dim FSO As FileSystemObject, f As File
Dim fn As String
fn = ActiveDocument.FullName
Set FD = Application.FileDialog(msoFileDialogSaveAs)
FD.FilterIndex = 3
FD.InitialFileName = Selection.Text
FD.Show
Set FSO = New FileSystemObject
Set f = FSO.GetFile(fn)
ActiveDocument.SaveAs FD.SelectedItems(1)
ActiveDocument.Close 0
f.Delete
End Sub
- Зарегистрирован: 26.06.2013
- Сообщений: 15
Re: Word - сохранение файла
Нет, чуть-чуть не так, извиняюсь за кривую постановку задачи.
У меня 2 папки: в первой - старые файлы (коих миллион с тележкой), во второй - новые, с мною заданными именами.
Захожу в первую папку, нахожу и открываю файл, выделяю и копирую из него нужный мне отрывок текста в несколько абзацев (с помощью простейшего макроса), закрываю и удаляю файл. Захожу в каталог-посредник, в котором файлы только для чтения (грубо говоря шаблоны), открываю подходящий файл, вставляю в него данные из буфера, выделяю те самые несколько слов и сохраняю во второй папке с уже новым именем. В общем схема как-то так и выглядит.
Теперь что мне нужно: мне просто нужно удалять файл-источник после его закрытия.
- Зарегистрирован: 26.06.2013
- Сообщений: 15
Re: Word - сохранение файла
В общем, я чуть переработал под себя ваш код:
Sub mymacro()
Dim FSO As FileSystemObject, f As File
Dim fn As String
fn = ActiveDocument.FullName
Set FSO = New FileSystemObject
Set f = FSO.GetFile(fn)
ActiveDocument.Close 0
f.Delete
End Sub
работает как надо, только... у меня точно последняя просьба (железно последняя! ) - как сделать, чтобы файл удалялся не навсегда, а в корзину? Просто ошибки бывают у всех, и я не исключение, могу по запарке не тот файл грохнуть, и заметить это только потом, спустя время, при повторной проверке.
Сообщений [ 21 ]
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Word - сохранение файла
Очень часто происходит так, что привыкнув к какой-то одной форме и настройкам компьютерной программы, мы с трудом переходим на ее новую версию, начинаем путаться, не можем выполнить быстро и рационально привычные операции и ругаем разработчиков: зачем так намудрили?! Наш сайт о Microsoft Office Word даст ответ про: как установить автоперенос по умолчанию в word.
Все это знакомо многим пользователям, которые проработав с 2003 версией Ворда долгое время, установили у себя более поздние. Наш сайт о Microsoft Office Word даст ответ про: автоматический перенос на следующую строку ворд.
На самом деле со временем все функции находятся, и пользователь по достоинству оценивает внесенные усовершенствования, но время, требующееся на адаптацию, можно существенно сократить, если обратиться к специалистам. На портале о Microsoft Office Word вы узнаете про: печать альбомной страницы.
На форуме сайта Ворд Эксперт вы найдете полную информацию по настройкам и работе в любой версии программы, а также множество советов и готовых схем по автоматизации процесса: макросы, различные шаблоны, оптимальное выполнение задач по редактированию текста, назначения горячих клавиш и очень много других полезных сведений. Наш сайт о Microsoft Office Word даст ответ про: таймер прямого отсчёта времени от даты.
Если у вас есть какая-то конкретная проблема, информации по которой вы не нашли ни в разделе часто задаваемых вопросов, ни в других подразделах, то всегда можно оставить заявку на ее решение в специально для этого предназначенном подфоруме. На портале о Microsoft Office Word вы узнаете про: как на сносках вворде сделать меньшее растояниее после черты.