С Новым годом! Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 30.10.2018
Сообщений: 1

Создание лога работы vbs скрипта

14.11.2018, 09:29. Показов 867. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем добрый день! Очень нужна помощь просветленных )
Есть VBS скрипт, который разбивает общий файл excel на кучу отдельных файлов. Одна строка общего файла = 1 отдельный файл.
Нужно сделать логирование действий, сколько строк обработано, сколько отдельных файлов создано.

Кликните здесь для просмотра всего текста

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
Option Explicit
 
' Константы из библиотеки Microsoft Excel
 
Const xlCSV = 6
Const xlWindows = 2
 
 
Dim strSourceFolder
 
Dim strTemplateFile
 
Dim strRelativeDestFolder
Dim strDestFolder
 
Dim objFSO
Dim objExcel
 
Dim objFile
 
Dim objTemplateFile
Dim objSourceFile
 
Dim i
Dim strDestFile
 
Dim anyValue
 
 
strTemplateFile = "С:\check.csv"
strRelativeDestFolder = "..\Итог"
 
' Если число переданных скрипту аргументов равно единице…
If WScript.Arguments.Count = 1 Then
    
    strSourceFolder = WScript.Arguments.Item(0)
    
    ' Создаём экземпляр объекта класса "Scripting.FileSystemObject"
    Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
 
    ' Если файл шаблона существует…
    If objFSO.FileExists(strTemplateFile) Then
        
        If objFSO.FolderExists(strSourceFolder) Then
            strDestFolder = objFSO.GetAbsolutePathName(objFSO.BuildPath(strSourceFolder, strRelativeDestFolder))
            
            If Not objFSO.FolderExists(strDestFolder) Then
                objFSO.CreateFolder strDestFolder
            End If
            
            Set objExcel = Nothing
            
            For Each objFile In objFSO.GetFolder(strSourceFolder).Files
                Select Case LCase(objFSO.GetExtensionName(objFile.Name))
                    Case "xls", "xlsx"
                        If objExcel Is Nothing Then
                            Set objExcel = WScript.CreateObject("Excel.Application")
                        End If
                        
                        objExcel.Workbooks.OpenText strTemplateFile, , , , , , , , , , , , , , , , , True
                        Set objTemplateFile = objExcel.Workbooks.Item(1)
                        
                        Set objSourceFile = objExcel.Workbooks.Open(objFile.Path, False, True)
                        
                        For i = 1 To objSourceFile.Worksheets.Item(1).UsedRange.Rows.Count - 2
                            With objTemplateFile.Worksheets.Item(1)
                                anyValue = objSourceFile.Worksheets.Item(1).Cells.Item(i + 1, 5).Value
                                
                                .Range("B3").Value = anyValue
                                .Range("F2").Value = anyValue
                                
                                anyValue = objSourceFile.Worksheets.Item(1).Cells.Item(i + 1, 6).Value
                                
                                ' Задали это полученное значение трём диапазонам Рабочей книги файла шаблона
                                ' будущего целевого файла
                                .Range("D3").Value = anyValue
                                .Range("D4").Value = anyValue
                                .Range("H3").Value = anyValue
                                
                                ' Посчитали и задали значение ещё одному диапазону Рабочей книги файла шаблона
                                ' будущего целевого файла
                                .Range("L3").Value = Fix((anyValue * 18 / 118 + 0.005) * 100) / 100
                            End With
                            
                            strDestFile = objFSO.BuildPath(strDestFolder, objFSO.GetBaseName(strTemplateFile) & "_" & objFSO.GetBaseName(objFile.Name) & "_" & Right("000" & CStr(i), 3) & "." & objFSO.GetExtensionName(strTemplateFile))
                            
                            If objFSO.FileExists(strDestFile) Then
                                objFSO.DeleteFile strDestFile, True
                            End If
                            
                            objTemplateFile.SaveAs strDestFile, xlCSV, , , , , , , , , , True
                        Next
                        
                        WScript.Echo "Строк по реестру обработано: " & CStr(objSourceFile.Worksheets.Item(1).UsedRange.Rows.Count - 2)
                        
                        objSourceFile.Close False
                        objTemplateFile.Close False
                End Select
            Next
            
            If Not objExcel Is Nothing Then
                objExcel.Quit
                Set objExcel = Nothing
            End If
        Else
            WScript.Echo "Can't find source folder [" & strSourceFolder & "]."
            WScript.Quit 3
        End If
    Else
        WScript.Echo "Can't find template file [" & strTemplateFile & "]."
        WScript.Quit 2
    End If
    
    Set objFSO = Nothing
Else
    WScript.Echo "Usage: cscript.exe //nologo """ & WScript.ScriptName & """ <Source folder>"
    WScript.Quit 1
End If
 
WScript.Quit 0


к сожалению встроить логирование не получается. Нашел на одном из форумов пример
Кликните здесь для просмотра всего текста

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Dim WshShell    : set WshShell = WScript.CreateObject("WScript.Shell")
Dim objFS       : set objFS = CreateObject("Scripting.FileSystemObject")
Dim file        : file = fileLog
Dim objFile
Dim tfile
 
if objFS.FileExists(file) then
        Set tfile = objFS.GetFile(file)
        '8 - открываем для добавления
        '1 - для чтения
        '2 - для записи. 
        '--
        '-2 используем системную кодировку
        Set objFile = tfile.OpenAsTextStream(8, -2) 
    else
        Set objFile = objFS.CreateTextFile(file, False)
end if
WScript.Echo "[путь к файлу лога]: " & objFS.GetAbsolutePathName(file)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.11.2018, 09:29
Ответы с готовыми решениями:

Парсинг лога. Перевод скрипта с bash в vbs.
Проблема такая. В основном работаю с Linux, но сейчас потребовалось написать скрипт как под Linux, так и под Windows. Скрипт должен от лога...

Создание EXE из VBS скрипта
Всем добрый день! У меня есть скрипт который запускает EXCEL книгу со включенными макросами. Скрипт у меня в формате .vbs. Поставил себе...

Создание BAT-файла с помощью VBS-скрипта
Всем большой привет! Помогите создать файл bat через скрипт vbs и записать в него код. пример кода: net use X: /del /yes net use X:...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.11.2018, 09:29
Помогаю со студенческими работами здесь

Создание одного VBS-скрипта с помощью другого
Вопрос такой может ли Vbs скрипт создать другой Vbs скрипт

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

Создание VBS скрипта для мониторинга и отключения 3 служб
Здравствуйте Имеется программа, запуск которой запускает 3 службы. При зависании одной из служб, зависает вся программа. Нужно как то...

Создание бинарного файла из vbs / Как создать exe файл из vbs
Имеется файл с расширением exe. Нужно как-нибудь занести массив байт в скрипт, и чтоб потом этот файл создавался при запуске vbs

Создание скрипта для корректного завершения работы приложения
Есть программа, которая работает с БД. Хочу создать батник, который будет корректно завершать работу программы. И после чего перезагружать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru