Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Microsoft Office (Word, Excel, Outlook и т.д.) (http://forum.oszone.net/forumdisplay.php?f=115)
-   -   [Word 2007]Создание документа с определённым названием? (http://forum.oszone.net/showthread.php?t=237868)

Chestnut 04-07-2012 12:33 1945604

[Word 2007]Создание документа с определённым названием?
 
Здравствуйте! Интересует есть ли такая возможность - создать документ ворд сразу с определённым названием, а не по умолчанию? По роду деятельности приходится часто создавать и постоянно переименовывать документ, а после правки и загрузки на определённый ресурс сразу удалять и так по кругу . Хотелось бы "упростить себе жизнь" немного...Речь идёт о создании документа с моим названием максимально быстро - через контекстное меню например. Так же уточню, надо чтоб документ с "моим названием" создавался в строго определённой папке. Я пытался мутить с шаблоном и прописывать в его свойствах название нужное,но каждый раз приходится тыкать на этот шаблон...потом он спрашивает про название.... место сохранение файла. Это всё очень долго(файлов то сотни),хотелось бы свести всё к одному клику(я про создание дока с нужным названием).

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

Chestnut 08-07-2012 13:55 1948069

Ап! Это что невыполнимая задача такая :) ?

Iska 08-07-2012 15:19 1948102

Chestnut, контекстное меню оттого так и называется, что команды его зависят от контекста исполнения. То есть, работает парадигма: «Объект» → «Набор действий, доступных для этого объекта». Потому «лепить» туда создание двух документов в определённой папке совершенно неправильно. «Вывести типа ярлычков этих шаблонов на панель браузера» — всё лучше, чем добавлять в контекстное меню.

Ответьте на ряд вопросов:

1. Озвучьте все имена и пути к документам.
2. Что делать, если по указанному пути существует документ с тем же именем.
3. Опишите подробно, что есть:
Цитата:

Цитата Chestnut
и загрузки на определённый ресурс »


Chestnut 08-07-2012 16:24 1948134

Iska,

Цитата:

Цитата Iska
Ответьте на ряд вопросов:
1. Озвучьте все имена и пути к документам.
2. Что делать, если по указанному пути существует документ с тем же именем.
3. Опишите подробно, что есть: »

С удовольствием.

1.Название ...просто "Документы", путь сохранения - рабочий стол и папка "Docs" например :) , с путём я думаю разберусь мне главное выяснить где его прописать, чтобы при закрытии после редактирования не было никаких уточнений - закрыл и документ там.

2.Если существует - удалять(хотя именно удалить мне вручную ctrr+a не затрудняет,так как там много файлов).

3.Скачивается ряд документов с одного сайта и загружается на другой, это информационные системы. Ряд информации приходится копировать вручную, ссылки там или форму какую и вот именно для таких случаев мне всё это и нужно.

Предполагаю, тут наверное надо задействоать макрос какой(уж не думал,что для таких простых вещей надо так "углубляться"),но я к сожалению в этом ничего не понимаю и разобраться самостоятельно в довольно мудрёном интерфейсе офиса не получится...пробовал так сказать.

Iska 08-07-2012 17:41 1948179

Цитата:

Цитата Chestnut
1.Название ...просто "Документы", путь сохранения - рабочий стол и папка "Docs" например , с путём я думаю разберусь мне главное выяснить где его прописать, чтобы при закрытии после редактирования не было никаких уточнений - закрыл и документ там. »

Цитата:

Цитата Chestnut
хотя именно удалить мне вручную ctrr+a не затрудняет,так как там много файлов »

Речь выше шла о двух документах со строго заданными именами:
Цитата:

Цитата Chestnut
пара шаблонов - строго прописать в них названия »

Не понятно.

Вот Вам пример для одного документа на основе одного шаблона (если Вам действительно нужен документ на основе шаблона, отличного от «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 1948249

Iska,
ЕЕЕЕЕ!!!! Всё получилось :yahoo: . Сам бы не допёр ни в жисть!

Цитата:

Цитата Chestnut
хотя именно удалить мне вручную ctrr+a не затрудняет,так как там много файлов »

Цитата:

Цитата Iska
Речь выше шла о двух документах со строго заданными именами »

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


Спасибо Вам за отклик и за помощь!!! Сильно помогли, оочень признателен!! :oszone:

Iska 08-07-2012 21:25 1948266

Цитата:

Цитата Chestnut
Имелось ввиду,что в этой папке и другие файлы,которые после загрузки удаляются из неё вместе с теми файлами,которые создаются по шаблону »

Спасибо, ясно.

Chestnut 14-10-2012 20:47 2005306

Как сделать так, чтобы открываемые шаблоны документа(те варианты, что выше здесь предложены) - сразу открывались в активном окне, при запущенном браузере например???

Iska 14-10-2012 21:43 2005349

Chestnut, выше — создаются (а не открываются) документы (а не шаблоны). Поясните, что Вам нужно.

Цитата:

Цитата Chestnut
сразу открывались в активном окне »

Активном окне Word'а? Нет ничего проще: INTUIT.ru: Курс: Microsoft Word 2007: ..: Лекция №2: Создание документов и электронных форм.

Цитата:

Цитата Chestnut
при запущенном браузере например??? »

Поясните, при чём тут браузер.

Chestnut 14-10-2012 22:56 2005416

В общем как хотелось бы: активно окно браузера к примеру(или любое другое приложение) и чтобы после запуска скрипта на создание шаблона документа этот созданный документ открывался поверх активного окна приложения. А то он(документ) появляется у меня в свёрнутом виде в диспетчере задач и по нему надо кликать,вот этот клик и хотелось бы исключить...

И ещё можно ли так, чтоб после копирования при закрытии документа не выводило окна с вопросом да\нет, а сохраняло и закрывало сразу?

Iska 15-10-2012 01:11 2005483

Цитата:

Цитата Chestnut
активно окно браузера к примеру(или любое другое приложение) и чтобы после запуска скрипта на создание шаблона документа этот созданный документ открывался поверх активного окна приложения. А то он(документ) появляется у меня в свёрнутом виде в диспетчере задач и по нему надо кликать,вот этот клик и хотелось бы исключить... »

Как Вы тогда запускаете скрипт при активном окне браузера?

Chestnut 15-10-2012 11:54 2005647

Цитата:

Цитата Iska
Как Вы тогда запускаете скрипт при активном окне браузера? »

Горячей клавишей с клавиатуры( привязал запуск скрипта в программе Comfort Keys).

Iska 15-10-2012 19:04 2005929

Цитата:

Цитата Chestnut
Горячей клавишей с клавиатуры( привязал запуск скрипта в программе Comfort Keys). »

Покажите скриншотами, как Вы сие сделали.

Chestnut 15-10-2012 20:13 2006006

Вот, пожалуйста


Iska 15-10-2012 22:26 2006119

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].

Цитата:

Цитата Chestnut
И ещё можно ли так, чтоб после копирования при закрытии документа не выводило окна с вопросом да\нет, а сохраняло и закрывало сразу? »

Какого копирования?

Chestnut 16-10-2012 03:29 2006224

Цитата:

Цитата Iska
Давайте попробуем так: »

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

Цитата:

Цитата Iska
Какого копирования? »

после редактирования(вставки инфы и закрытия).

Iska 16-10-2012 05:10 2006231

Chestnut, в предыдущем коде по недосмотру я оставил после отладки не те значения «strTemplateName» и «strDocumentName», что использовались в примерах ранее. Я поправил код.

Цитата:

Цитата Chestnut
Не помог к сожалению предложенный вами вариант. »

Читайте, что было написано дальше:
Цитата:

Цитата Iska
Если не сработает — раскомментируйте:
Код:

'MsgBox strDocumentName & " - " & .Name
запустите скрипт, дождитесь появления окна сообщения, нажмите в нём Ctrl-C и вставьте результат из буфера обмена сюда, обрамив его тэгом [code]. »

Жду результата.

Цитата:

Цитата Chestnut
после редактирования(вставки инфы и закрытия). »

Ясно. Вставьте в модуль ThisDocument шаблона документа (именно в модуль шаблона, а не документа!) — в примерах это «My Template.dotx» — следующий код:
Код:

Option Explicit

Private Sub Document_Close()
    Me.Save
End Sub


Chestnut 16-10-2012 17:42 2006580

Iska,



вот что пишет скрипт,как его обрамлять - не понял,да и думаю этот не тот случай

---------------------------
Windows Script Host
---------------------------
Template [c:\users\jk\appdata\roaming\microsoft\шаблоны\My Template.dotx] not found
---------------------------
ОК
---------------------------

Цитата:

Цитата Iska
Ясно. Вставьте в модуль ThisDocument шаблона документа (именно в модуль шаблона, а не документа!) — в примерах это «My Template.dotx» — следующий код: »

я не создавал никаких шаблонов,а просто скопировал данный вами код, поменял нужное название и расположение папки создаваемого файла и изменил на .vbs.

в общем я перестал понимать)), увы. Ладно, итак всё хорошо. Спасибо большое.

Iska 17-10-2012 18:19 2007306

Цитата:

Цитата Chestnut
как его обрамлять - не понял »

Здесь: [code] — написано.


Цитата:

Цитата Chestnut
вот что пишет скрипт »

А что Вы тогда раньше указывали в качестве шаблона:
Код:

strTemplateName = "My Template.dotx"
? Раньше ж работало у Вас?

Chestnut 17-10-2012 21:25 2007458

Цитата:

Цитата Iska
А что Вы тогда раньше указывали в качестве шаблона:
Код:
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



Цитата:

Цитата Iska
Если не сработает — раскомментируйте:
Код:
'MsgBox strDocumentName & " - " & .Name »

а это я не понял,что имелось ввиду и каким образом) ,скрипт то у меня срабатывает

Iska 26-10-2012 23:44 2013026

Цитата:

Цитата Chestnut
Там я указал название документа(в обоих строчках одинаковое). »

Зачем? В строке:
Код:

strTemplateName = "My Template.dotx"
указываете имя реального, существующего шаблона, на основе которого будет создаваться документ.

Цитата:

Цитата Chestnut
а это я не понял,что имелось ввиду и каким образом) ,скрипт то у меня срабатывает »

Как надо — не срабатывает.

Chestnut 17-12-2012 00:04 2046787

В общем всё работает почти так как надо,активным окном документа не становится потому как в открытом браузере "активные" действия до запуска скрипта ведутся :) ,если там мышью не кликать то документ по шаблону открывается "поверх", мелочи.

-----------------------------------------------------------------

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

Iska 17-12-2012 01:35 2046864

Chestnut, какая вставка? Вы о чём? Нигде в коде никакой «вставки» нет.

Chestnut 17-12-2012 02:38 2046892

Paste - копировать из буфера обмена.В коде нет этого и нужно,нужно другое - чтобы сохраняло создаваемый документ(тот который через ваш скрипт) как веб-документ, и тот кто его откроет его таким и видел.Можно?

Iska 17-12-2012 03:00 2046901

То, что на рисунке — это просто представление документа. Добавьте это:
Код:

ActiveWindow.View.Type = wdWebView
в код перед:
Код:

.SaveAs strPath2File
и:
Код:

Const wdWebView = 6
к константам.


К формату же самого документа это никак не относится.


Время: 17:52.

Время: 17:52.
© OSzone.net 2001-