Здесь я собрал несколько красноречивых примеров использования VBS. Все они предназначены для работы с MS Office. Попытался максимально комментировавать все что происходит. Все должно работать начиная с версии Windows XP. Писать скрипты можно в обычном блокноте, но чя использую Notepad ++. У него куча преимущест, например фиксированные отступы, посветка синтаксиса и самая на мой взгляд полезная плюшка — фнкции и процедуры можно сворачивать в одну строку, чтобы лишний код не мозолил глаза. Еще в Notepad++ есть подсказки, очень удобно.
Excel
создание
|
1 2 3 4 5 6 7 8 9 10 |
Option Explicit Dim xl Set xl = CreateObject("Excel.Application") xl.Visible = False ' не открывая excel создадим документ xl.Workbooks.Add ' добавим книгу целиком xl.ActiveWorkbook.SaveAs "C: \TestFile.xlsx" xl.quit Set xl = Nothing |
открытие
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Dim xl Dim xlWorkbook Dim xlWorksheet '' создадим объект excel Set xl = CreateObject("Excel.Application") xl.Visible = True ' открываем окно excel 'при закрытие вопрос о сохранении не возникает 'изменения, если были, не сохраняются xl.Application.DisplayAlerts = False xl.Workbooks.Open("C:\TestFile.xlsx") xl.quit 'не сохраняя закрываем Set xl = Nothing |
чтение
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
Dim xl Dim xlWorkbook Dim xlWorksheet Dim iRowCount,iColCount,iRow,iCol '' Create new excel file Set xl = CreateObject("Excel.Application") xl.Visible = True Set xlWorkbook = xl.Workbooks.Open("C:\TestFile.xlsx") xl.Application.DisplayAlerts = False ' выбипаем первую таблицу (страницу) книги Set xlWorksheet = xlWorkbook.Worksheets(1) ' вычисляем количество строк и столбцов iRowCount = xlWorksheet.UsedRange.rows.count iColCount = xlWorksheet.UsedRange.Columns.count ''читаем все строки и стобцы For iRow = 1 to iRowCount For iCol = 1 to iColCount Msgbox xlWorksheet.Cells(iRow,iCol).Value Next Next |
запись
|
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 |
Dim xl Dim xlWorkbook Dim xlWorksheet '' Create new excel file Set xl = CreateObject("Excel.Application") xl.Visible = True xl.Application.DisplayAlerts = False Set xlWorkbook = xl.Workbooks.Open("C:\TestFile.xlsx") Set xlWorksheet = xlWorkbook.Worksheets(1) '' Write data in excel xlWorksheet.cells(1,1).value ="Tutorial Name" xlWorksheet.cells(1,2).value ="Tutorial Date" xlWorksheet.cells(1,3).value ="Source" xlWorksheet.cells(2,1).value ="Excel operations" xlWorksheet.cells(2,2).value = Date xlWorksheet.cells(2,3).value ="vb script" ' сохранить под именем 'xl.ActiveWorkbook.SaveAs "C: \TestFile.xlsx" 'или просто сохранить xl.ActiveWorkbook.Save xl.quit Set xl = Nothing |
добавление страницы
|
1 |
Set NewSheet = xlWorkbook.Worksheets.Add |
удаление страницы
|
1 2 3 4 |
' без предупреждения xl.Application.DisplayAlerts = False ' удаление страницы из книги xlWorkbook.sheets(“sheet1”).Delete |
скрыть / раскрыть страницу
|
1 2 3 4 5 |
' скрыть страницу xlWorkbook.sheets(“sheet2”).Visible = False 'раскрыть страницу xlWorkbook.sheets(“sheet2”).Visible = true |
заблокировать / разблокировать страницу
|
1 2 3 4 5 6 7 8 9 |
'' заблокировать страницу If xlWorkbook.sheets(“sheet2”).ProtectContent= false then xlWorkbook.sheets(“sheet2”).Protect Password:”TestPWD”, Userinterfaceonly=True End if '' разблокировать страницу If xlWorkbook.sheets(“sheet2”).ProtectContent=true then xlWorkbook.sheets(“sheet2”).UnProtect Password:”TestPWD” End if |
форматирование
|
1 2 3 4 5 6 7 8 9 10 |
xlApp.Cells(2,2).Font.Bold = True ' Делаем текст жирным в ячейке 1,1 xlApp.Cells(2,2).Font.Size = 20 ' Устанавливаем размер шрифта xlApp.Cells(2,2).Font.ColorIndex = 2 ' Устанавливаем цвет текста xlApp.Cells(2,2).Interior.ColorIndex = 1 ' Устанавливаем цвет ячейки xlApp.Cells(2,2).Value = "Test" ' Добавляем данные Set oRangeD2D8 = xlApp.Range("D2","D8") ' Получаем доступ к ряду ячеек oRangeD2D8.Font.Size = 16 ' Устанавливаем размер шрифта oRangeD2D8.Font.Italic = True ' Делаем курсивный текст oRangeD2D8.Font.Underline = True ' Делаем текст подчёркнутым |
копировать данные в другую страницу
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Dim xl Dim xlWorkbook Dim xlWorksheet '' создать новую книгу Set xl = CreateObject("Excel.Application") xl.Visible = True xl.Application.DisplayAlerts = False ' игнорировать сообщения Set xlWorkbook = xl.Workbooks.Open("C:\TestFile.xlsx") '' копировать первую страницу xlWorkbook.Worksheets(“Sheet1”).Range(“A1:C5”).Copy '' вставить все на вторую страницу xlWorkbook.Worksheets(“Sheet2”).Range(“A1”).PasteSpecial Set xl = Nothing |
открыть книгу и выполнить макрос
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Option Explicit Dim app, ChangePhonesFolder, ChangePhonesFileName, inChangePhonesFullFileName, InFolderName, objExcel Dim f, s, b, i, my_time, logs set objExcel = CreateObject ("Excel.Application") app="С:\EXT\UnZip.xlsb" on error goto 0: TI_Avaya() sub TI_Avaya() objExcel.Visible = true objExcel.Workbooks.Open (app) objExcel.run "Time_Indicators" 'имя макроса Time_Indicators objExcel.Workbooks("UnZip.xlsb").Close (true) objExcel.Quit end sub |
открыть книгу для редактирования под паролем
|
1 2 3 4 5 |
xlsFileName = "Книга1.xlsx" psw="111" set a = createobject("excel.application") a.visible=true set b = a.workbooks.open(xlsFileName, 1, False, 1, password) |
общий наглядный пример с коментариями
|
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 |
Option Explicit Dim oExcelApp ' Объявляем переменные Dim oRangeD2D8 Dim oRangeH2J8 Set oExcelApp = CreateObject("Excel.Application") ' Создаём объект с Excel-ем oExcelApp.Visible = True ' Делаем Excel видимым oExcelApp.Workbooks.Add ' Добавляем книгу в Excel oExcelApp.Cells(2,2).Font.Bold = True ' Делаем текст жирным в ячейке 1,1 oExcelApp.Cells(2,2).Font.Size = 20 ' Устанавливаем размер шрифта oExcelApp.Cells(2,2).Font.ColorIndex = 2 ' Устанавливаем цвет текста oExcelApp.Cells(2,2).Interior.ColorIndex = 1 ' Устанавливаем цвет ячейки oExcelApp.Cells(2,2).Value = "Test" ' Добавляем данные Set oRangeD2D8 = oExcelApp.Range("D2","D8") ' Получаем доступ к ряду ячеек oRangeD2D8.Font.Size = 16 ' Устанавливаем размер шрифта oRangeD2D8.Font.Italic = True ' Делаем курсивный текст oRangeD2D8.Font.Underline = True ' Делаем текст подчёркнутым oRangeD2D8.Value = "Test" ' Устанавливаем для всех них текст 'изменим ширину столбцов A и B на фиксированную oExcelApp.Columns(1).ColumnWidth = 20 oExcelApp.Columns(2).ColumnWidth = 30 'изменим столбец C на автоматический oExcelApp.Columns(3).AutoFit() Dim i For i = 2 To 6 oExcelApp.Cells(i,6).Value = i ' заполняем ячейки числами Next oExcelApp.Cells(8,6).Font.Bold = True oExcelApp.Cells(8,6).Font.Underline = True oExcelApp.Cells(8,6).Font.Size = 24 oExcelApp.Cells(8,6).Formula = "=SUM(F2:F6)" ' Добавляем формулу, которая в ячейке F8 отобразит сумму ранее добавленных цифр Set oRangeH2J8 = oExcelApp.Range("H2","J8") ' Получаем доступ к ячейкам H2:J8 oRangeH2J8.Merge ' Объединяем группу ячеек oExcelApp.Save ' Сохраняем Excel файл oExcelApp.Quit ' Закрываем Excel 'хороший тон - почисти за собой Set objSheet = Nothing Set objExcel = Nothing |
результат

Word
Иногда бывает задача получить какие-либо данные из word-кого документа и потом что-то с ними сделать дальше. Так же бывает и обратная задача: необходимо создать Word документ и записать в него какие-либо данные, а затем сохранить его на диск. Здесь я приведу небольшие примеры, показывающие как открыть word документ и прочитать из него текстовые данные на VBScript, а так же как создать пустой word документ, добавить в него текстовые данные, а затем записать его. Делать моно практически все, если знать необходимые константы.
создание
|
1 2 3 4 5 6 7 8 9 10 11 |
Run Sub Run() Dim Word Set Word = CreateObject("Word.Application") Set Word = objWord.Documents.Add() Word.Visible = FALSE Word.Documents.open("%FilePath%") Word.Save Word.Quit Set Word = Nothing End Sub |
чтение
рекомендация Microsoft ©
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
Dim Word Dim WordDoc Dim var Set Word = CreateObject("Word.Application") 'Open the document Set WordDoc = Word.Documents.open("%FilePath%") 'Read the document NumberOfWords = WordDoc.Sentences.count For i = 1 to NumberOfWords WScript.Echo WordDoc.Sentences(i) Next 'Close the document WordDoc.Save Word.Quit 'Release the object variables Set WordDoc = Nothing Set Word = Nothing |
ещё вариант…
|
1 2 3 4 5 6 7 8 9 10 |
Set Wrd = CreateObject("Word.Application") Set Doc = Wrd.Documents.Open("C:test.doc") Set Pars = Doc.Range().Paragraphs For Each Par In Pars txt = Par.Range.Text ' Что-то делаем с текстовыми данными из word-кого документа Next Doc.Close Wrd.Quit False |
Сначала запускаем Word в 1-й строке, во 2-й строке открываем word-кий документ (путь лучше указывать абсолютный).
Затем в 3-й строке получаем все параграфы, которые есть в документе и в 4-й строке в цикле проходим по всем.
В двух последних строках закрываем документ и закрываем сам Word, изменения не сохраняем (False).
запись
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<span class="hljs-keyword">Set</span> objWord = CreateObject(<span class="hljs-string">"Word.Application"</span>) objWord.Visible = <span class="hljs-literal">True</span> <span class="hljs-keyword">Set</span> objDoc = objWord.Documents.Add() <span class="hljs-keyword">Set</span> objSelection = objWord.Selection objSelection.Font.Name = <span class="hljs-string">"Arial"</span> objSelection.Font.Size = <span class="hljs-string">"18"</span> objSelection.TypeText <span class="hljs-string">"Network Adapter Report"</span> objSelection.TypeParagraph() objSelection.Font.Size = <span class="hljs-string">"14"</span> objSelection.TypeText <span class="hljs-string">""</span> & <span class="hljs-type">Date</span>() objSelection.TypeParagraph() |
пример создания Word документа и добавления в него таблицы
Эти простые примеры показывают минимальные возможности автоматизации чтения и записи word документов на VBScript, а дальше, можно написать более сложные программы, используя те же приемы, что используются в Visual Basic или других языках для работы с word-ом.