Показать полную графическую версию : [Word 2007]Создание документа с определённым названием?
Chestnut
04-07-2012, 12:33
Здравствуйте! Интересует есть ли такая возможность - создать документ ворд сразу с определённым названием, а не по умолчанию? По роду деятельности приходится часто создавать и постоянно переименовывать документ, а после правки и загрузки на определённый ресурс сразу удалять и так по кругу . Хотелось бы "упростить себе жизнь" немного...Речь идёт о создании документа с моим названием максимально быстро - через контекстное меню например. Так же уточню, надо чтоб документ с "моим названием" создавался в строго определённой папке. Я пытался мутить с шаблоном и прописывать в его свойствах название нужное,но каждый раз приходится тыкать на этот шаблон...потом он спрашивает про название.... место сохранение файла. Это всё очень долго(файлов то сотни),хотелось бы свести всё к одному клику(я про создание дока с нужным названием).
P.S. Вот например как бы сделать следующим образом - пара шаблонов - строго прописать в них названия, путь сохранения. Вывести типа ярлычков этих шаблонов на панель браузера. Кликнул по такому ярлычку - вставил чего нужно и при закрытии он бы не спрашивал как называть и куда сохранять,а делал это автоматом. Подскажите пожалуйста.
Chestnut
08-07-2012, 13:55
Ап! Это что невыполнимая задача такая :) ?
Chestnut, контекстное меню оттого так и называется, что команды его зависят от контекста исполнения. То есть, работает парадигма: «Объект» → «Набор действий, доступных для этого объекта». Потому «лепить» туда создание двух документов в определённой папке совершенно неправильно. «Вывести типа ярлычков этих шаблонов на панель браузера» — всё лучше, чем добавлять в контекстное меню.
Ответьте на ряд вопросов:
1. Озвучьте все имена и пути к документам.
2. Что делать, если по указанному пути существует документ с тем же именем.
3. Опишите подробно, что есть:
и загрузки на определённый ресурс »
Chestnut
08-07-2012, 16:24
Iska,
Ответьте на ряд вопросов:
1. Озвучьте все имена и пути к документам.
2. Что делать, если по указанному пути существует документ с тем же именем.
3. Опишите подробно, что есть: »
С удовольствием.
1.Название ...просто "Документы", путь сохранения - рабочий стол и папка "Docs" например :) , с путём я думаю разберусь мне главное выяснить где его прописать, чтобы при закрытии после редактирования не было никаких уточнений - закрыл и документ там.
2.Если существует - удалять(хотя именно удалить мне вручную ctrr+a не затрудняет,так как там много файлов).
3.Скачивается ряд документов с одного сайта и загружается на другой, это информационные системы. Ряд информации приходится копировать вручную, ссылки там или форму какую и вот именно для таких случаев мне всё это и нужно.
Предполагаю, тут наверное надо задействоать макрос какой(уж не думал,что для таких простых вещей надо так "углубляться"),но я к сожалению в этом ничего не понимаю и разобраться самостоятельно в довольно мудрёном интерфейсе офиса не получится...пробовал так сказать.
1.Название ...просто "Документы", путь сохранения - рабочий стол и папка "Docs" например , с путём я думаю разберусь мне главное выяснить где его прописать, чтобы при закрытии после редактирования не было никаких уточнений - закрыл и документ там. »
хотя именно удалить мне вручную ctrr+a не затрудняет,так как там много файлов »
Речь выше шла о двух документах со строго заданными именами:
пара шаблонов - строго прописать в них названия »
Не понятно.
Вот Вам пример для одного документа на основе одного шаблона (если Вам действительно нужен документ на основе шаблона, отличного от «Normal.dot»/«Normal.dot»):
Option Explicit
Const wdUserTemplatesPath = 2
Const wdDoNotSaveChanges = 0
Dim objFSO
Dim objWshShell
Dim objWord
Dim strTemplateName
Dim strDocumentName
Dim strPath2Save
Dim strPath2Template
Dim strPath2File
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set objWshShell = WScript.CreateObject("WScript.Shell")
Set objWord = WScript.CreateObject("Word.Application")
strTemplateName = "My Template.dotx"
strDocumentName = "Документы.docx"
strPath2Save = objFSO.BuildPath(objWshShell.SpecialFolders("Desktop"), "Docs")
With objWord
strPath2Template = objFSO.BuildPath(.Options.DefaultFilePath(wdUserTemplatesPath), strTemplateName)
If objFSO.FileExists(strPath2Template) Then
If objFSO.FolderExists(strPath2Save) Then
strPath2File = objFSO.BuildPath(strPath2Save, strDocumentName)
With .Documents.Add(strPath2Template)
If objFSO.FileExists(strPath2File) Then
objFSO.DeleteFile strPath2File, True
End If
.SaveAs strPath2File
.Close wdDoNotSaveChanges
End With
Else
WScript.Echo "Folder [" & strPath2Save & "] not found"
End If
Else
WScript.Echo "Template [" & strPath2Template & "] not found"
End If
.Quit
End With
Set objWord = Nothing
Set objWshShell = Nothing
Set objFSO = Nothing
WScript.Quit 0
Сохраните приведённый код в файле с расширением «.vbs» в кодировке «ANSI»(«Windows-1251»).
Здесь:
strTemplateName = "My Template.dotx"
strDocumentName = "Документы.docx"
strPath2Save = objFSO.BuildPath(objWshShell.SpecialFolders("Desktop"), "Docs")
имя заданного шаблона, имя документа и путь к папке для сохранения («Рабочий стол» текущего пользователя +"\Docs») соответственно. Задайте свои данные.
Быть может, для Вас будет удобнее сразу его и открывать?
Option Explicit
Const wdUserTemplatesPath = 2
Const wdDoNotSaveChanges = 0
Dim objFSO
Dim objWshShell
Dim objWord
Dim strTemplateName
Dim strDocumentName
Dim strPath2Save
Dim strPath2Template
Dim strPath2File
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set objWshShell = WScript.CreateObject("WScript.Shell")
Set objWord = WScript.CreateObject("Word.Application")
strTemplateName = "My Template.dotx"
strDocumentName = "Документы.docx"
strPath2Save = objFSO.BuildPath(objWshShell.SpecialFolders("Desktop"), "Docs")
With objWord
strPath2Template = objFSO.BuildPath(.Options.DefaultFilePath(wdUserTemplatesPath), strTemplateName)
If objFSO.FileExists(strPath2Template) Then
If objFSO.FolderExists(strPath2Save) Then
strPath2File = objFSO.BuildPath(strPath2Save, strDocumentName)
With .Documents.Add(strPath2Template)
If objFSO.FileExists(strPath2File) Then
objFSO.DeleteFile strPath2File, True
End If
.SaveAs strPath2File
.Close wdDoNotSaveChanges
End With
.Documents.Open strPath2File
.Visible = True
Else
WScript.Echo "Folder [" & strPath2Save & "] not found"
.Quit
End If
Else
WScript.Echo "Template [" & strPath2Template & "] not found"
.Quit
End If
End With
Set objWord = Nothing
Set objWshShell = Nothing
Set objFSO = Nothing
WScript.Quit 0
Chestnut
08-07-2012, 20:49
Iska,
ЕЕЕЕЕ!!!! Всё получилось :yahoo: . Сам бы не допёр ни в жисть!
хотя именно удалить мне вручную ctrr+a не затрудняет,так как там много файлов »
Речь выше шла о двух документах со строго заданными именами »
Имелось ввиду,что в этой папке и другие файлы,которые после загрузки удаляются из неё вместе с теми файлами,которые создаются по шаблону,ну и так по кругу...Сдаётся мне и этот процесс "выделения и удаления в активном окне" тоже можно сократить до одного клика,но тут уже другая история, поищу подходящий софт с макросами.
Спасибо Вам за отклик и за помощь!!! Сильно помогли, оочень признателен!! :oszone:
Имелось ввиду,что в этой папке и другие файлы,которые после загрузки удаляются из неё вместе с теми файлами,которые создаются по шаблону »
Спасибо, ясно.
Chestnut
14-10-2012, 20:47
Как сделать так, чтобы открываемые шаблоны документа(те варианты, что выше здесь предложены) - сразу открывались в активном окне, при запущенном браузере например???
Chestnut, выше — создаются (а не открываются) документы (а не шаблоны). Поясните, что Вам нужно.
сразу открывались в активном окне »
Активном окне Word'а? Нет ничего проще: INTUIT.ru: Курс: Microsoft Word 2007: ..: Лекция №2: Создание документов и электронных форм (http://www.intuit.ru/department/office/ms2007guide/2/).
при запущенном браузере например??? »
Поясните, при чём тут браузер.
Chestnut
14-10-2012, 22:56
В общем как хотелось бы: активно окно браузера к примеру(или любое другое приложение) и чтобы после запуска скрипта на создание шаблона документа этот созданный документ открывался поверх активного окна приложения. А то он(документ) появляется у меня в свёрнутом виде в диспетчере задач и по нему надо кликать,вот этот клик и хотелось бы исключить...
И ещё можно ли так, чтоб после копирования при закрытии документа не выводило окна с вопросом да\нет, а сохраняло и закрывало сразу?
активно окно браузера к примеру(или любое другое приложение) и чтобы после запуска скрипта на создание шаблона документа этот созданный документ открывался поверх активного окна приложения. А то он(документ) появляется у меня в свёрнутом виде в диспетчере задач и по нему надо кликать,вот этот клик и хотелось бы исключить... »
Как Вы тогда запускаете скрипт при активном окне браузера?
Chestnut
15-10-2012, 11:54
Как Вы тогда запускаете скрипт при активном окне браузера? »
Горячей клавишей с клавиатуры( привязал запуск скрипта в программе Comfort Keys).
Горячей клавишей с клавиатуры( привязал запуск скрипта в программе Comfort Keys). »
Покажите скриншотами, как Вы сие сделали.
Chestnut
15-10-2012, 20:13
Вот, пожалуйста
http://i45.fastpic.ru/big/2012/1015/3c/0926d1451bd103e21810e797a1786e3c.jpg (http://fastpic.ru/)
Chestnut, у меня окно Word'а с созданным документом и так становится активным.
Давайте попробуем так:
Option Explicit
Const wdUserTemplatesPath = 2
Const wdDoNotSaveChanges = 0
Dim objFSO
Dim objWshShell
Dim objWord
Dim strTemplateName
Dim strDocumentName
Dim strPath2Save
Dim strPath2Template
Dim strPath2File
Dim objTask
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set objWshShell = WScript.CreateObject("WScript.Shell")
Set objWord = WScript.CreateObject("Word.Application")
strTemplateName = "My Template.dotx"
strDocumentName = "Документы.docx"
strPath2Save = objFSO.BuildPath(objWshShell.SpecialFolders("Desktop"), "Docs")
With objWord
strPath2Template = objFSO.BuildPath(.Options.DefaultFilePath(wdUserTemplatesPath), strTemplateName)
If objFSO.FileExists(strPath2Template) Then
If objFSO.FolderExists(strPath2Save) Then
strPath2File = objFSO.BuildPath(strPath2Save, strDocumentName)
With .Documents.Add(strPath2Template)
If objFSO.FileExists(strPath2File) Then
objFSO.DeleteFile strPath2File, True
End If
.SaveAs strPath2File
.Close wdDoNotSaveChanges
End With
.Documents.Open strPath2File
.Visible = True
For Each objTask In .Tasks
If objTask.Name = strDocumentName & " - " & .Name Then
objTask.Activate
End If
Next
'MsgBox strDocumentName & " - " & .Name
Else
WScript.Echo "Folder [" & strPath2Save & "] not found"
.Quit
End If
Else
WScript.Echo "Template [" & strPath2Template & "] not found"
.Quit
End If
End With
Set objWord = Nothing
Set objWshShell = Nothing
Set objFSO = Nothing
WScript.Quit 0
Если не сработает — раскомментируйте:
'MsgBox strDocumentName & " - " & .Name
запустите скрипт, дождитесь появления окна сообщения, нажмите в нём Ctrl-C и вставьте результат из буфера обмена сюда, обрамив его тэгом [code] (http://forum.oszone.net/misc.php?do=bbcode#code).
И ещё можно ли так, чтоб после копирования при закрытии документа не выводило окна с вопросом да\нет, а сохраняло и закрывало сразу? »
Какого копирования?
Chestnut
16-10-2012, 03:29
Давайте попробуем так: »
Не помог к сожалению предложенный вами вариант. Скрип срабатывает, но документ им создаваемый всё равно на заднем плане открывается - за активным окном браузера, то есть документ не в свёрнутом виде создаётся , я неправильно описал изначально - он не замещает собой уже активное окно как бы)). Документы без шаблона открываются как и положено "поверху".
Какого копирования? »
после редактирования(вставки инфы и закрытия).
Chestnut, в предыдущем коде (http://forum.oszone.net/post-2006119.html#post2006119) по недосмотру я оставил после отладки не те значения «strTemplateName» и «strDocumentName», что использовались в примерах ранее. Я поправил код.
Не помог к сожалению предложенный вами вариант. »
Читайте, что было написано дальше:
Если не сработает — раскомментируйте:
'MsgBox strDocumentName & " - " & .Name
запустите скрипт, дождитесь появления окна сообщения, нажмите в нём Ctrl-C и вставьте результат из буфера обмена сюда, обрамив его тэгом [code] (http://forum.oszone.net/misc.php?do=bbcode#code). »
Жду результата.
после редактирования(вставки инфы и закрытия). »
Ясно. Вставьте в модуль ThisDocument шаблона документа (именно в модуль шаблона, а не документа!) — в примерах это «My Template.dotx» — следующий код:
Option Explicit
Private Sub Document_Close()
Me.Save
End Sub
Chestnut
16-10-2012, 17:42
Iska,
вот что пишет скрипт,как его обрамлять - не понял,да и думаю этот не тот случай
---------------------------
Windows Script Host
---------------------------
Template [c:\users\jk\appdata\roaming\microsoft\шаблоны\My Template.dotx] not found
---------------------------
ОК
---------------------------
Ясно. Вставьте в модуль ThisDocument шаблона документа (именно в модуль шаблона, а не документа!) — в примерах это «My Template.dotx» — следующий код: »
я не создавал никаких шаблонов,а просто скопировал данный вами код, поменял нужное название и расположение папки создаваемого файла и изменил на .vbs.
в общем я перестал понимать)), увы. Ладно, итак всё хорошо. Спасибо большое.
как его обрамлять - не понял »
Здесь: [code] (http://forum.oszone.net/misc.php?do=bbcode#code) — написано.
вот что пишет скрипт »
А что Вы тогда раньше указывали в качестве шаблона:
strTemplateName = "My Template.dotx"
? Раньше ж работало у Вас?
Chestnut
17-10-2012, 21:25
А что Вы тогда раньше указывали в качестве шаблона:
Код:
strTemplateName = "My Template.dotx"
? Раньше ж работало у Вас? »
Там я указал название документа(в обоих строчках одинаковое). И сейчас работает по-прежнему, то есть документ создаётся нормально, я наверное просто неправильно имя папки задал,когда копировал последний ваш код,потом поправил. Но документ открывается всё так же - "сзади" активного окна((
вот так у меня сейчас:
Dim strTemplateName
Dim strDocumentName
Dim strPath2Save
Dim strPath2Template
Dim strPath2File
Dim objTask
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set objWshShell = WScript.CreateObject("WScript.Shell")
Set objWord = WScript.CreateObject("Word.Application")
strTemplateName = "Извещение.dotx"
strDocumentName = "Извещение.docx"
strPath2Save = objFSO.BuildPath(objWshShell.SpecialFolders("Desktop"), "Documents")
With objWord
strPath2Template = objFSO.BuildPath(.Options.DefaultFilePath(wdUserTemplatesPath), strTemplateName)
If objFSO.FileExists(strPath2Template) Then
If objFSO.FolderExists(strPath2Save) Then
strPath2File = objFSO.BuildPath(strPath2Save, strDocumentName)
With .Documents.Add(strPath2Template)
If objFSO.FileExists(strPath2File) Then
objFSO.DeleteFile strPath2File, True
End If
.SaveAs strPath2File
.Close wdDoNotSaveChanges
End With
.Documents.Open strPath2File
.Visible = True
For Each objTask In .Tasks
If objTask.Name = strDocumentName & " - " & .Name Then
objTask.Activate
End If
Next
'MsgBox strDocumentName & " - " & .Name
Else
WScript.Echo "Folder [" & strPath2Save & "] not found"
.Quit
End If
Else
WScript.Echo "Template [" & strPath2Template & "] not found"
.Quit
End If
End With
Set objWord = Nothing
Set objWshShell = Nothing
Set objFSO = Nothing
WScript.Quit 0
Если не сработает — раскомментируйте:
Код:
'MsgBox strDocumentName & " - " & .Name »
а это я не понял,что имелось ввиду и каким образом) ,скрипт то у меня срабатывает
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC