1 (изменено: dacent, 2011-06-07 21:30:24)

Тема: VBScript: Формирование отчёта в Word

Ребят, есть скрипт добавления  записи в реестр Windows

Dim vOrg, objArgs, root, key, WshShell
root = "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run\"
KeyHP = "notepad"
Set WshShell = WScript.CreateObject("WScript.Shell")        
WshShell.RegWrite root+keyHP,"C:\Program Files\USDownloader\USDownloader.exe /autorun"

Как результат автоматически сформировать в виде отчёта в Wordе???

2 (изменено: dacent, 2011-06-07 09:42:12)

Re: VBScript: Формирование отчёта в Word

могу вывести текущею дату и время

Dim StartTime,EndTime: StartTime = Now ' For seeing how long the script takes to run
Dim objShell
Dim objFSO
Set objShell = WScript.CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Wscript.Echo "StartTime = " & StartTime

а вот дальше что то не идёт(

3

Re: VBScript: Формирование отчёта в Word

А какая информация должна содержаться в отчёте?

В основе всего лежит простота.

4 (изменено: dacent, 2011-06-07 09:51:14)

Re: VBScript: Формирование отчёта в Word

Felix Faria пишет:

А какая информация должна содержаться в отчёте?

отчёт о работе скрипта т.е. что он выполнил, что он сделал. В моём случае он добавил приложение в реестр автозагрузки Windows. Дата и время тоже не помешают

вот ещё кода немного, но тут только загрузка Word

Dim wordApp
Dim DocWord

Set wordApp = WScript.CreateObject("Word.Application")
wordApp.visible = true

wordApp.Documents.Add()

set DocWord = wordApp.ActiveDocument

DocWord.Paragraphs.Add()

5

Re: VBScript: Формирование отчёта в Word

Dim TimeCompletion, Information
Call CreateKey("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run\", _
                "C:\Program Files\USDownloader\USDownloader.exe /autorun", "NewKey")
Call WriteWordReport("C:\Report.docx")

Sub CreateKey(Root, Path, KeyName) ' Процедура добавления ключа
On Error Resume Next
Set WshShell = WScript.CreateObject("WScript.Shell")
    WshShell.RegWrite Root&KeyName,Path
    If (Err.Number=0) Then 
        Information = "Ключ "&KeyName&" был успешно занесён в реестр."
    Else
        Information = "Произошла ошибка записи ключа "&KeyName&" в реестр. "
    End If 
    Err.Clear : TimeCompletion = Now
End Sub 

Sub WriteWordReport(FilePath) ' Процедура создания word-отчёта
    Set objWord = CreateObject("Word.Application")
     objWord.Visible = False
    Set objDoc = objWord.Documents.Add()
        objWord.Selection.TypeText TimeCompletion&" "&Information&vbCrLf
    objDoc.SaveAs(FilePath)
    objDoc.Close
    objWord.Quit 
End Sub

А использование Word'a принципиально? На мой взгляд, проще использовать текстовые файлы. Тогда процедура записи будет такая:

Sub WriteReport(FilePath)
Set FSO = CreateObject("Scripting.FileSystemObject")
    Set File = FSO.OpenTextFile(FilePath, 8, True)
        File.WriteLine TimeCompletion&" "&Information
    File.Close
End Sub
В основе всего лежит простота.

6

Re: VBScript: Формирование отчёта в Word

что то Word не запустился( с твоим кодом. и вот процедура создания ключа какое значение имеет?

Да! использование Word'a обязательно.

7

Re: VBScript: Формирование отчёта в Word

dacent пишет:

что то Word не запустился(

Word запустился, но в скрытом режиме. Если нужно его увидеть, то замените "False" на "True" в строке

objWord.Visible = False
dacent пишет:

и вот процедура создания ключа какое значение имеет?

А тогда отчёт о работе чего должен быть предоставлен?
В данном случае скрипт первой процедурой создал новый ключ в реестре, второй процедурой создал Word-документ с описанием результата первой процедуры (указано время создания и название нового ключа) и сохранил этот документ на диске С под именем "Report.docx" (MS Word 2007). Если судить по предыдущим сообщениям, то именно это и было нужно сделать.

В основе всего лежит простота.

8

Re: VBScript: Формирование отчёта в Word

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

9

Re: VBScript: Формирование отчёта в Word

ааааа всё всё извиняюсь)

10 (изменено: Felix Faria, 2011-06-07 20:31:38)

Re: VBScript: Формирование отчёта в Word

Если не нужно закрывать, то уберите или закомментируйте эти строчки:

    objDoc.Close
    objWord.Quit

Остальное всё понятно в коде?

В основе всего лежит простота.

11

Re: VBScript: Формирование отчёта в Word

отчёт о работе скрипта. в принципе этого вполне достаточно. приложение добавилось, а в ворде это зафиксировалось

12 (изменено: dacent, 2011-06-08 09:36:37)

Re: VBScript: Формирование отчёта в Word

Спасибо большое!!!
но у меня есть 2я часть работы, почти тоже самое, только нужно добавить  приложения в папку Автозагрузки
код я сделал а с вордом всё та же проблема(

 ' Этот пример показывает, как создавать ярлык к программе
 ' и копировать его в заданную папку
 
 L_Welcome_MsgBox_Message_Text   = _
 "Этот скрипт создаст ярлык и поместит его в Автозагрузку"
 

 Call Welcome()
 
  ' Создаем ярлык
 
 Dim WSHShell
 Set WSHShell = WScript.CreateObject("WScript.Shell")
 
 Dim MyShortcut, MyDesktop, StartupPath
 
 ' Узнаем путь к специальной папке Автозагрузка
 StartupPath = WSHShell.SpecialFolders("Startup")
 
 ' Создаем ярлык для Автозагрузки
 Set MyShortcut = WSHShell.CreateShortcut(StartupPath & _
 "\Ярлык.lnk")
 
 ' Устанавливаем свойства для ярлыка
 MyShortcut.TargetPath = WSHShell.ExpandEnvironmentStrings("C:\Program Files\AIMP3\AIMP3.exe")
 MyShortcut.WorkingDirectory = WSHShell.ExpandEnvironmentStrings("%windir%")
 MyShortcut.WindowStyle = 4
 MyShortcut.IconLocation = _
 WSHShell.ExpandEnvironmentStrings("C:\Program Files\AIMP3\AIMP3.exe, 0")
 MyShortcut.Save
 
 WScript.Echo "Ярлык создан и помещен в Автозагрузку"
 
 Sub Welcome()
     Dim intDoIt
 
     intDoIt =  MsgBox(L_Welcome_MsgBox_Message_Text,    _
                       vbOKCancel + vbInformation,       _
                       L_Welcome_MsgBox_Title_Text )
     If intDoIt = vbCancel Then
     WScript.Quit
     End If
 End Sub

13

Re: VBScript: Формирование отчёта в Word

Ну я специально и сделал формирование отчета в Word'e в отдельную процедуру. Вставь код процедуры из прошлого кода в свой, только замени там строчку

objWord.Selection.TypeText TimeCompletion&" "&Information&vbCrLf

На такую:

objWord.Selection.TypeText "Ярлык создан и помещен в Автозагрузку"

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

В основе всего лежит простота.

14

Re: VBScript: Формирование отчёта в Word

спасибо!!! сейчас испробую

15 (изменено: dacent, 2011-06-07 21:38:14)

Re: VBScript: Формирование отчёта в Word

сохранить Call WriteWordReport("C:\Report.docx") также выходит а вот с вызовом процедуры я похоже запутался и намудрил(

16

Re: VBScript: Формирование отчёта в Word

чёрт. не выходит(

17

Re: VBScript: Формирование отчёта в Word

подскажи пожалуйста

18

Re: VBScript: Формирование отчёта в Word

L_Welcome_MsgBox_Message_Text = "Этот скрипт создаст ярлык и поместит его в Автозагрузку"
Call Welcome()
Set WSHShell = WScript.CreateObject("WScript.Shell")
Dim MyShortcut, StartupPath
StartupPath = WSHShell.SpecialFolders("Startup")
Set MyShortcut = WSHShell.CreateShortcut(StartupPath&"\Ярлык.lnk")
    MyShortcut.TargetPath = WSHShell.ExpandEnvironmentStrings("C:\Program Files\AIMP3\AIMP3.exe")
    MyShortcut.WorkingDirectory = WSHShell.ExpandEnvironmentStrings("%windir%")
    MyShortcut.WindowStyle = 4
    MyShortcut.IconLocation = WSHShell.ExpandEnvironmentStrings("C:\Program Files\AIMP3\AIMP3.exe, 0")
MyShortcut.Save : TimeCompletion = Now ' Запоминаем время создания

Call WriteWordReport("C:\Report.docx")

Sub Welcome()
    Dim intDoIt
    intDoIt =  MsgBox(L_Welcome_MsgBox_Message_Text,    _
                      vbOKCancel + vbInformation,       _
                      L_Welcome_MsgBox_Title_Text )
    If intDoIt = vbCancel Then
    WScript.Quit
    End If
End Sub

Sub WriteWordReport(FilePath) ' Процедура создания word-отчёта
    Set objWord = CreateObject("Word.Application")
     objWord.Visible = True
    Set objDoc = objWord.Documents.Add()
        objWord.Selection.TypeText TimeCompletion&" Ярлык создан и помещен в Автозагрузку."&vbCrLf
    objDoc.SaveAs(FilePath)
    'objDoc.Close
    'objWord.Quit 
End Sub
В основе всего лежит простота.

19

Re: VBScript: Формирование отчёта в Word

dacent, здесь не чат. На будущее: начинайте предложения с заглавной буквы и используйте знаки препинания.

20

Re: VBScript: Формирование отчёта в Word

alexii пишет:

dacent, здесь не чат. На будущее: начинайте предложения с заглавной буквы и используйте знаки препинания.

Я понял

21

Re: VBScript: Формирование отчёта в Word

Felix Faria, ОГРОМНОЕ СПАСИБО тебе!!!!!!

22

Re: VBScript: Формирование отчёта в Word

dacent пишет:

Я понял

Знаки препинания — это ещё и точки в конце предложений.

23

Re: VBScript: Формирование отчёта в Word

Товарищи, подскажите, пожалуйста, vbs в какой кодировке пишет текст? У меня никак не получается  вставить в закладку текст в национальной кодировке одной из стран СНГ.

24

Re: VBScript: Формирование отчёта в Word

У меня никак не получается  вставить в закладку текст в национальной кодировке одной из стран СНГ.

Приведите Ваш код.