Vba excel открыть для чтения открытый файл

Чтение и запись в файл, открытый с помощью оператора Open. Операторы Input, Line Input, Write и функция EOF. Примеры использования в VBA Excel.

Операторы чтения и записи в файл

Оператор Input #

Оператор Input # считывает данные из открытого файла с последовательным доступом и присваивает эти данные переменным.

Оператор Input # используется только с файлами, открытыми в режиме Input или Binary. При прочтении стандартные строковые или числовые значения присваиваются переменным без изменения.

Синтаксис оператора Input #:

Input #Номер_файла, Переменные

Компоненты оператора Input #:

  • Номер_файла – обязательный параметр, представляющий из себя номер, присвоенный файлу при открытии с помощью оператора Open.
  • Переменные – обязательный параметр, представляющий из себя список переменных, разделенных запятой, которым присваиваются значения, считанные из файла.

Особенности применения оператора Input #:

  • Элементы данных в файле должны быть указаны в том же порядке, что и переменные в списке Переменные, и соответствовать им по типу данных. Если переменная числовая, а данные текстовые, этой переменной будет присвоено нулевое значение.
  • Если при чтении данных достигнут конец файла, чтение прерывается и возникает ошибка. Для ее предупреждения в коде VBA Excel используется функция EOF.
  • Чтобы данные из файла могли быть правильно прочитаны и записаны в переменные с помощью оператора Input #, они должны быть записаны в файл с помощью оператора Write #. Он обеспечивает правильное разделение каждого из полей (элементов) данных.

Оператор Line Input #

Оператор Line Input # считывает одну строку из открытого файла с последовательным доступом и присваивает ее значение строковой переменной.

Оператор Line Input # считывает из файла по одному символу до тех пор, пока не встретится символ возврата каретки (Chr(13)) или последовательность символа возврата каретки и перевода строки (Chr (13) + Chr(10)).

Синтаксис оператора Line Input #:

Line Input #Номер_файла, Переменная

Компоненты оператора Line Input #:

  • Номер_файла – обязательный параметр, представляющий из себя номер, присвоенный файлу при открытии с помощью оператора Open.
  • Переменная – обязательный параметр, представляющий из себя имя переменной, объявленной как String или Variant, которой присваивается строка, считанная из файла.

Оператор Write #

Оператор Write # записывает данные в файл с последовательным доступом.

Синтаксис оператора Write #:

Write #Номер_файла, [Данные]

Компоненты оператора Write #:

  • Номер_файла – обязательный параметр, представляющий из себя номер, присвоенный файлу при открытии с помощью оператора Open.
  • Данные – необязательный параметр, представляющий из себя одно или несколько числовых или строковых выражений, разделенных запятой, которые нужно записать в файл.

Особенности применения оператора Write #:

  • Данные, записанные с помощью оператора Write #, считываются из файла с помощью оператора Input #.
  • Если опустить параметр Данные и добавить запятую после Номер_файла, в файл будет добавлена пустая строка.
  • Несколько выражений в списке Данные могут быть разделены точкой с запятой или запятой.
  • Числовые данные всегда записываются с точкой в качестве разделителя целой и дробной части.
  • Оператор Write # вставляет запятые между элементами и прямые парные кавычки вокруг строк при их записи в файл.
  • После записи в файл последнего символа из параметра Данные оператор Write # вставляет символы возврата каретки и перевода строки (Chr (13) + Chr(10)).

Функция EOF

Функция EOF возвращает логическое значение True, когда достигнут конец файла, открытого для последовательного (Input) или произвольного (Random) доступа.

Синтаксис функции EOF:

Номер_файла – это номер, присвоенный файлу при открытии с помощью оператора Open.

Функция EOF используется для предупреждения ошибок, вызываемых попытками выполнить чтение после конца файла. Она возвращает значение False, пока не будет достигнут конец файла.

Примеры чтения и записи в файл

Пример 1
Открытие (или создание, если он не существует) текстового файла для чтения и записи и запись в него одной строки, состоящей из двух текстовых и одного числового значений. Файл с именем myFile1.txt будет создан в той же папке, где расположен файл Excel с кодом VBA.

Sub Test1()

Dim ff As Integer

‘Получаем свободный номер для открываемого файла

ff = FreeFile

‘Открываем (или создаем) файл для чтения и записи

Open ThisWorkbook.Path & «myFile1.txt» For Output As ff

‘Записываем в файл одну строку

Write #ff, «Дает корова молоко!», _

«Куда идет король?», 25.35847

‘Закрываем файл

Close ff

‘Открываем файл для просмотра

ThisWorkbook.FollowHyperlink (ThisWorkbook.Path & «myFile1.txt»)

End Sub

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

Пример 2
Открытие (или создание, если он не существует) файла без расширения для чтения и записи и запись в него трех строк: двух текстовых и одной в числовом формате. Файл с именем myFile2 будет создан в той же папке, где расположен файл Excel с кодом VBA.

Так как у файла нет расширения, Windows выведет диалоговое окно для выбора открывающей его программы. Выберите любой текстовый редактор или интернет-браузер.

Sub Test2()

Dim ff As Integer

‘Получаем свободный номер для открываемого файла

ff = FreeFile

‘Открываем (или создаем) файл для чтения и записи

Open ThisWorkbook.Path & «myFile2» For Output As ff

‘Записываем в файл три строки

Write #ff, «Дает корова молоко!»

Write #ff, «Куда идет король?»

Write #ff, 25.35847

‘Закрываем файл

Close ff

‘Открываем файл для просмотра

ThisWorkbook.FollowHyperlink (ThisWorkbook.Path & «myFile2»)

End Sub

Пример 3
Считываем строку, разделенную на отдельные элементы, из файла myFile1.txt и записываем в три переменные, по типу данных соответствующие элементам.

Sub Test3()

Dim ff As Integer, str1 As String, _

str2 As String, num1 As Single

‘Получаем свободный номер для открываемого файла

ff = FreeFile

‘Открываем файл myFile1.txt для чтения

Open ThisWorkbook.Path & «myFile1.txt» For Input As ff

‘Считываем строку из файла и записываем в переменные

Input #ff, str1, str2, num1

Close ff

‘Смотрим, что записалось в переменные

MsgBox «str1 = « & str1 & vbNewLine _

& «str2 = « & str2 & vbNewLine _

& «num1 = « & num1

End Sub

Попробуйте заменить в этом примере строку Input #ff, str1, str2, num1 сначала на строку Input #ff, str1, затем на строку Line Input #ff, str1, чтобы наглядно увидеть разницу между операторами Input # и Line Input #.

В следующих примерах (4 и 5) замена оператора Input # на Line Input # не приведет ни к каким изменениям, так как данные в строках файла myFile2 не разделены на элементы (поля).

Пример 4
Считываем поочередно три строки из файла myFile2 и записываем в три элемента массива, объявленного как Variant, так как в этот файл ранее были записаны две строки с текстом и одна с числом.

Sub Test4()

Dim ff As Integer, a(2) As Variant, i As Byte

‘Получаем свободный номер для открываемого файла

ff = FreeFile

‘Открываем файл myFile2 для чтения

Open ThisWorkbook.Path & «myFile2» For Input As ff

‘Считываем строки из файла и записываем в элементы массива

   For i = 0 To 2

      Input #ff, a(i)

   Next

Close ff

‘Смотрим, что записалось в элементы массива

MsgBox «a(0) = « & a(0) & vbNewLine _

& «a(1) = « & a(1) & vbNewLine _

& «a(2) = « & a(2)

End Sub

Пример 5
Считываем с помощью цикла Do While… Loop все строки из файла myFile2 и записываем построчно в переменную, объявленную как String (число из третьей строки запишется как текст). Для остановки цикла при достижении конца файла используем функцию EOF.

Sub Test5()

Dim ff As Integer, a As Variant, b As String

‘Получаем свободный номер для открываемого файла

ff = FreeFile

‘Открываем файл myFile2 для чтения

Open ThisWorkbook.Path & «myFile2» For Input As ff

‘Считываем строки из файла и записываем в элементы массива

   Do While Not EOF(ff)

      Input #ff, a

      b = b & a & vbNewLine

   Loop

Close ff

‘Смотрим, что записалось в переменную

MsgBox b

End Sub


Предыдущая часть темы об открытии файла для ввода и вывода информации опубликована в статье: Оператор Open (синтаксис, параметры). Смотрите также связанную статью: Функция FreeFile.

Смотрите, как создавать и открывать текстовые файлы с помощью методов CreateTextFile и OpenTextFile. Чтение файла, запись и добавление информации с помощью объекта TextStream.


Содержание

  1. OpenTextFile method
  2. Syntax
  3. Settings
  4. Remarks
  5. See also
  6. Support and feedback
  7. Оператор Open
  8. Синтаксис
  9. Замечания
  10. Пример
  11. См. также
  12. Поддержка и обратная связь
  13. Workbooks.Open method (Excel)
  14. Syntax
  15. Parameters
  16. Return value
  17. Remarks
  18. Example
  19. Support and feedback

OpenTextFile method

Opens a specified file and returns a TextStream object that can be used to read from, write to, or append to the file.

Syntax

object.OpenTextFile (filename, [ iomode, [ create, [ format ]]])

The OpenTextFile method has these parts:

Part Description
object Required. Always the name of a FileSystemObject.
filename Required. String expression that identifies the file to open.
iomode Optional. Indicates input/output mode. Can be one of three constants: ForReading, ForWriting, or ForAppending.
create Optional. Boolean value that indicates whether a new file can be created if the specified filename doesn’t exist. The value is True if a new file is created; False if it isn’t created. The default is False.
format Optional. One of three Tristate values used to indicate the format of the opened file. If omitted, the file is opened as ASCII.

Settings

The iomode argument can have any of the following settings:

Constant Value Description
ForReading 1 Open a file for reading only. You can’t write to this file.
ForWriting 2 Open a file for writing only. Use this mode to replace an existing file with new data. You can’t read from this file.
ForAppending 8 Open a file and write to the end of the file. You can’t read from this file.

The format argument can have any of the following settings:

Constant Value Description
TristateUseDefault -2 Opens the file by using the system default.
TristateTrue -1 Opens the file as Unicode.
TristateFalse 0 Opens the file as ASCII.

The following code illustrates the use of the OpenTextFile method to open a file for appending text:

See also

Support and feedback

Have questions or feedback about Office VBA or this documentation? Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.

Источник

Оператор Open

Включает операции ввода-вывода для файла.

Синтаксис

ОткрытьpathnameДлярежима [ access ] [ lock ] As [ # ] filenumber [ Len = reclength ]

Синтаксис оператора Open состоит из следующих частей:

Part Описание
путь Обязательно. Строковое выражение, указывающее имя файла; может включать каталог или папку, а также диск.
Обязательно. Ключевое слово, задающее режим файла: Добавление, Двоичный, Ввод, Вывод или Прямой. Если элемент не задан, файл открывается для доступа в режиме Прямой.
Доступа Необязательный параметр. Ключевое слово, определяющее операции, разрешенные для открытого файла: Чтение, Запись или Чтение и запись.
Блокировки Необязательный параметр. Ключевое слово, определяющее операции, запрещенные для открытого файла другими процессами: Общий, Блокировка чтения, Блокировка записи и Блокировка чтения и записи.
filenumber Обязательно. Допустимый номер файла в диапазоне от 1 до 511 включительно. Используйте функцию FreeFile , чтобы получить следующий доступный номер файла.
reclength Необязательный параметр. Число меньше или равное 32767 (байт). Для файлов, открытых для прямого доступа это значение равно значению длины записи. Для файлов с последовательным доступом значение представляет собой число буферизуемых символов.

Замечания

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

Если файл, заданный элементом pathname, не существует, он будет создан при открытии файла в режиме Добавление, Двоичный, Вывод или Прямой.

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

Предложение Len игнорируется, если выбран режимДвоичный.

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

Пример

В этом примере показаны различные способы использования оператора Open для включения операций ввода и вывода для файла.

Следующий код открывает файл в режиме последовательного ввода.

В этом примере показано открытие файла в режиме «Двоичный» только для операций записи.

В следующем примере показано открытие файла в режиме «Прямой». Файл содержит записи определяемого пользователем типа.

В этом примере кода открывается файл для последовательных выходных данных; любой процесс может считывать или записывать в файл.

В этом примере кода файл открывается в двоичном режиме для чтения. другие процессы не могут прочитать файл.

См. также

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

Источник

Workbooks.Open method (Excel)

Opens a workbook.

Interested in developing solutions that extend the Office experience across multiple platforms? Check out the new Office Add-ins model. Office Add-ins have a small footprint compared to VSTO Add-ins and solutions, and you can build them by using almost any web programming technology, such as HTML5, JavaScript, CSS3, and XML.

Syntax

expression.Open (FileName, UpdateLinks, ReadOnly, Format, Password, WriteResPassword, IgnoreReadOnlyRecommended, Origin, Delimiter, Editable, Notify, Converter, AddToMru, Local, CorruptLoad)

expression A variable that represents a Workbooks object.

Parameters

Name Required/Optional Data type Description
FileName Optional Variant String. The file name of the workbook to be opened.
UpdateLinks Optional Variant Specifies the way external references (links) in the file, such as the reference to a range in the Budget.xls workbook in the following formula =SUM([Budget.xls]Annual!C10:C25) , are updated. If this argument is omitted, the user is prompted to specify how links will be updated. For more information about the values used by this parameter, see the Remarks section.

If Microsoft Excel is opening a file in the WKS, WK1, or WK3 format and the UpdateLinks argument is 0, no charts are created; otherwise, Microsoft Excel generates charts from the graphs attached to the file. ReadOnly Optional Variant True to open the workbook in read-only mode. Format Optional Variant If Microsoft Excel opens a text file, this argument specifies the delimiter character. If this argument is omitted, the current delimiter is used. For more information about the values used by this parameter, see the Remarks section. Password Optional Variant A string that contains the password required to open a protected workbook. If this argument is omitted and the workbook requires a password, the user is prompted for the password. WriteResPassword Optional Variant A string that contains the password required to write to a write-reserved workbook. If this argument is omitted and the workbook requires a password, the user will be prompted for the password. IgnoreReadOnlyRecommended Optional Variant True to have Microsoft Excel not display the read-only recommended message (if the workbook was saved with the Read-Only Recommended option). Origin Optional Variant If the file is a text file, this argument indicates where it originated, so that code pages and Carriage Return/Line Feed (CR/LF) can be mapped correctly. Can be one of the following XlPlatform constants: xlMacintosh, xlWindows, or xlMSDOS. If this argument is omitted, the current operating system is used. Delimiter Optional Variant If the file is a text file and the Format argument is 6, this argument is a string that specifies the character to be used as the delimiter. For example, use Chr(9) for tabs, use «,» for commas, use «;» for semicolons, or use a custom character. Only the first character of the string is used. Editable Optional Variant If the file is a Microsoft Excel 4.0 add-in, this argument is True to open the add-in so that it is a visible window. If this argument is False or omitted, the add-in is opened as hidden, and it cannot be unhidden. This option does not apply to add-ins created in Microsoft Excel 5.0 or later.

If the file is an Excel template, True to open the specified template for editing. False to open a new workbook based on the specified template. The default value is False. Notify Optional Variant If the file cannot be opened in read/write mode, this argument is True to add the file to the file notification list. Microsoft Excel will open the file as read-only, poll the file notification list, and then notify the user when the file becomes available. If this argument is False or omitted, no notification is requested, and any attempts to open an unavailable file will fail. Converter Optional Variant The index of the first file converter to try when opening the file. The specified file converter is tried first; if this converter does not recognize the file, all other converters are tried. The converter index consists of the row numbers of the converters returned by the FileConverters property. AddToMru Optional Variant True to add this workbook to the list of recently used files. The default value is False. Local Optional Variant True saves files against the language of Microsoft Excel (including control panel settings). False (default) saves files against the language of Visual Basic for Applications (VBA) (which is typically United States English unless the VBA project where Workbooks.Open is run from is an old internationalized XL5/95 VBA project). CorruptLoad Optional XlCorruptLoad Can be one of the following constants: xlNormalLoad, xlRepairFile and xlExtractData. The default behavior if no value is specified is xlNormalLoad, and does not attempt recovery when initiated through the OM.

Return value

A Workbook object that represents the opened workbook.

By default, macros are enabled when opening files programmatically. Use the AutomationSecurity property to set the macro security mode used when opening files programmatically.

You can specify one of the following values in the UpdateLinks parameter to determine whether external references (links) are updated when the workbook is opened.

Value Description
0 External references (links) will not be updated when the workbook is opened.
3 External references (links) will be updated when the workbook is opened.

You can specify one of the following values in the Format parameter to determine the delimiter character for the file.

Value Delimiter
1 Tabs
2 Commas
3 Spaces
4 Semicolons
5 Nothing
6 Custom character (see the Delimiter argument)

Example

The following code example opens the workbook Analysis.xls and then runs its Auto_Open macro.

The following code example imports a sheet from another workbook onto a new sheet in the current workbook. Sheet1 in the current workbook must contain the path name of the workbook to import in cell D3, the file name in cell D4, and the worksheet name in cell D5. The imported worksheet is inserted after Sheet1 in the current workbook.

Support and feedback

Have questions or feedback about Office VBA or this documentation? Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.

Источник

I want to search through existing Excel files with a macro, but I don’t want to display those files when they’re opened by the code. Is there a way to have them open «in the background», so to speak?

Teamothy's user avatar

Teamothy

1,9903 gold badges15 silver badges24 bronze badges

asked Feb 23, 2009 at 23:08

notnot's user avatar

1

Not sure if you can open them invisibly in the current excel instance

You can open a new instance of excel though, hide it and then open the workbooks

Dim app as New Excel.Application
app.Visible = False 'Visible is False by default, so this isn't necessary
Dim book As Excel.Workbook
Set book = app.Workbooks.Add(fileName)
'
' Do what you have to do
'
book.Close SaveChanges:=False
app.Quit
Set app = Nothing

As others have posted, make sure you clean up after you are finished with any opened workbooks

answered Feb 23, 2009 at 23:25

Patrick McDonald's user avatar

Patrick McDonaldPatrick McDonald

63.7k14 gold badges106 silver badges118 bronze badges

5

If that suits your needs, I would simply use

Application.ScreenUpdating = False

with the added benefit of accelerating your code, instead of slowing it down by using a second instance of Excel.

answered Aug 13, 2009 at 15:46

iDevlop's user avatar

iDevlopiDevlop

24.6k11 gold badges89 silver badges147 bronze badges

3

To open a workbook as hidden in the existing instance of Excel, use following:

    Application.ScreenUpdating = False
    Workbooks.Open Filename:=FilePath, UpdateLinks:=True, ReadOnly:=True
    ActiveWindow.Visible = False
    ThisWorkbook.Activate
    Application.ScreenUpdating = True

answered Jan 16, 2012 at 11:54

Ashok's user avatar

AshokAshok

1,0743 gold badges14 silver badges24 bronze badges

2

Using ADO (AnonJr already explained) and utilizing SQL is possibly the best option for fetching data from a closed workbook without opening that in conventional way. Please watch this VIDEO.

OTHERWISE, possibly GetObject(<filename with path>) is the most CONCISE way. Worksheets remain invisible, however will appear in project explorer window in VBE just like any other workbook opened in conventional ways.

Dim wb As Workbook

Set wb = GetObject("C:MyData.xlsx")  'Worksheets will remain invisible, no new window appears in the screen
' your codes here
wb.Close SaveChanges:=False

If you want to read a particular sheet, need not even define a Workbook variable

Dim sh As Worksheet
Set sh = GetObject("C:MyData.xlsx").Worksheets("MySheet")
' your codes here
sh.Parent.Close SaveChanges:=False 'Closes the associated workbook

answered Jan 22, 2021 at 16:03

Munim Rashid's user avatar

5

A much simpler approach that doesn’t involve manipulating active windows:

Dim wb As Workbook
Set wb = Workbooks.Open("workbook.xlsx")
wb.Windows(1).Visible = False

From what I can tell the Windows index on the workbook should always be 1. If anyone knows of any race conditions that would make this untrue please let me know.

answered Jul 13, 2016 at 18:40

wooobie's user avatar

wooobiewooobie

3452 silver badges12 bronze badges

Even though you’ve got your answer, for those that find this question, it is also possible to open an Excel spreadsheet as a JET data store. Borrowing the connection string from a project I’ve used it on, it will look kinda like this:

strExcelConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & objFile.Path & ";Extended Properties=""Excel 8.0;HDR=Yes"""
strSQL = "SELECT * FROM [RegistrationList$] ORDER BY DateToRegister DESC"

Note that «RegistrationList» is the name of the tab in the workbook. There are a few tutorials floating around on the web with the particulars of what you can and can’t do accessing a sheet this way.

Just thought I’d add. :)

answered Aug 13, 2009 at 15:58

AnonJr's user avatar

AnonJrAnonJr

2,7491 gold badge28 silver badges39 bronze badges

4

The problem with both iDevlop’s and Ashok’s answers is that the fundamental problem is an Excel design flaw (apparently) in which the Open method fails to respect the Application.ScreenUpdating setting of False. Consequently, setting it to False is of no benefit to this problem.

If Patrick McDonald’s solution is too burdensome due to the overhead of starting a second instance of Excel, then the best solution I’ve found is to minimize the time that the opened workbook is visible by re-activating the original window as quickly as possible:

Dim TempWkBk As Workbook
Dim CurrentWin As Window

Set CurrentWin = ActiveWindow
Set TempWkBk = Workbooks.Open(SomeFilePath)
CurrentWin.Activate      'Allows only a VERY brief flash of the opened workbook
TempWkBk.Windows(1).Visible = False 'Only necessary if you also need to prevent
                                    'the user from manually accessing the opened
                                    'workbook before it is closed.

'Operate on the new workbook, which is not visible to the user, then close it...

answered Jul 22, 2014 at 19:07

pstraton's user avatar

pstratonpstraton

1,04014 silver badges9 bronze badges

4

Open the workbook as hidden and then set it as «saved» so that users are not prompted when they close out.

Dim w As Workbooks

Private Sub Workbook_Open()
    Application.ScreenUpdating = False
    Set w = Workbooks
    w.Open Filename:="\serverPriceList.xlsx", UpdateLinks:=False, ReadOnly:=True 'this is the data file were going to be opening
    ActiveWindow.Visible = False
    ThisWorkbook.Activate
    Application.ScreenUpdating = True
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    w.Item(2).Saved = True 'this will suppress the safe prompt for the data file only
End Sub

This is somewhat derivative of the answer posted by Ashok.

By doing it this way though you will not get prompted to save changes back to the Excel file your reading from. This is great if the Excel file your reading from is intended as a data source for validation. For example if the workbook contains product names and price data it can be hidden and you can show an Excel file that represents an invoice with drop downs for product that validates from that price list.

You can then store the price list on a shared location on a network somewhere and make it read-only.

answered Jul 18, 2014 at 17:19

Pen123's user avatar

1

Open them from a new instance of Excel.

Sub Test()

    Dim xl As Excel.Application
    Set xl = CreateObject("Excel.Application")

    Dim w As Workbook
    Set w = xl.Workbooks.Add()

    MsgBox "Not visible yet..."
    xl.Visible = True

    w.Close False
    Set xl = Nothing

End Sub

You need to remember to clean up after you’re done.

answered Feb 23, 2009 at 23:43

guillermooo's user avatar

guillermoooguillermooo

7,83515 gold badges53 silver badges58 bronze badges

1

In excel, hide the workbooks, and save them as hidden. When your app loads them they will not be shown.

Edit: upon re-reading, it became clear that these workbooks are not part of your application. Such a solution would be inappropriate for user workbooks.

answered Feb 23, 2009 at 23:18

JohnW's user avatar

JohnWJohnW

2,9621 gold badge27 silver badges30 bronze badges

148 / 35 / 6

Регистрация: 01.11.2013

Сообщений: 779

1

Открыть только для чтения

08.07.2020, 22:05. Показов 11729. Ответов 14


Студворк — интернет-сервис помощи студентам

При открытии Excel — евского файла появляется диалоговое окно с просьбой ввести пароль или открыть только для чтения.
Как в VBA открыть этот файл только для чтения, что бы это окно не появлялось?
Спасибо



0



amd48

779 / 461 / 79

Регистрация: 18.05.2016

Сообщений: 1,242

Записей в блоге: 4

09.07.2020, 09:38

2

Лучший ответ Сообщение было отмечено govorun как решение

Решение

нагуглил на другом форуме

Visual Basic
1
Workbooks.Open Filename:="C:test.xls", ReadOnly:=True



1



1813 / 1135 / 346

Регистрация: 11.07.2014

Сообщений: 4,002

09.07.2020, 11:41

3

govorun, а у вас в этом файле макросы, нужные вам, есть или нужно только содержимое листов?



0



148 / 35 / 6

Регистрация: 01.11.2013

Сообщений: 779

09.07.2020, 22:29

 [ТС]

4

Из VBA открываю Excel-евский файл что бы взять содержимое листов и закрыть его. Не показывая на экране. И все бы ничего, только вот при открытии файла вылазит запрос на пароль. Портит всю картину. По умолчанию стоит «Только для чтения», в принципе мне только это и нужно. Надо как-то что-то сделать, что бы это окно на экране не появлялось.

Миниатюры

Открыть только для чтения
 



0



1813 / 1135 / 346

Регистрация: 11.07.2014

Сообщений: 4,002

10.07.2020, 05:52

5

govorun, ну тогда может просто один раз открыть с запросом, создать новый файл и все листы скопировать в него. Этот новый сохранить под неким именем (в нем уже запроса не будет) и в дальнейшем работать только с ним. А макросы этого файла вы увидеть можете?



0



148 / 35 / 6

Регистрация: 01.11.2013

Сообщений: 779

10.07.2020, 06:50

 [ТС]

6

Burk, В нем нет макросов. Даже если они там есть, они мне не нужны. Мне нужно периодически брать данные с листов. Эти данные меняются. По-этому в копировании листов нет смысла



0



1813 / 1135 / 346

Регистрация: 11.07.2014

Сообщений: 4,002

10.07.2020, 07:02

7

govorun, я хотел узнать, если возможно, откуда приходит этот запрос. Если из модуля Эта книга, то изменить (удалить) этот запрос. Поэтому и хотелось посмотреть есть ли что-то в проекте ВБА. Ведь если выставить Защитить книгу, то такого запроса нет. Файл, по-видимому, не из вашей фирмы?



0



148 / 35 / 6

Регистрация: 01.11.2013

Сообщений: 779

10.07.2020, 07:09

 [ТС]

8

Цитата
Сообщение от Burk
Посмотреть сообщение

не из вашей фирмы

Возможно, не знаю.



0



1813 / 1135 / 346

Регистрация: 11.07.2014

Сообщений: 4,002

10.07.2020, 09:03

9

govorun, что значит возможно? Ведь если автор файла ваш, то он легко уберет этот запрос. А прислать этот файл вы не можете потому, что он шибко секретный?



0



2630 / 1636 / 744

Регистрация: 23.03.2015

Сообщений: 5,141

10.07.2020, 09:11

10

govorun,
Посмотрите расширение файла…



0



КостяФедореев

Часто онлайн

790 / 529 / 237

Регистрация: 09.01.2017

Сообщений: 1,820

10.07.2020, 09:27

11

Лучший ответ Сообщение было отмечено govorun как решение

Решение

govorun, Опробуйте у меня сработало.

Visual Basic
1
2
3
4
5
6
7
'отключаем показ сообщений
Application.DisplayAlerts = False
'производим действия, открытия книги
Workbooks.Open Filename:="C:test.xls", ReadOnly:=True
'какой-то код
'обязательно возвращаем показ сообщений
Application.DisplayAlerts = True



1



1813 / 1135 / 346

Регистрация: 11.07.2014

Сообщений: 4,002

10.07.2020, 09:39

12

КостяФедореев, это сработает не только у вас, но и у любого другого. Но здесь другой случай, при открытии не своего файла выскакивает этот запрос и, как я подозреваю, доступа к его макросам нет. По-видимому этот запрос в Эта книга открываемого (чужого) файла. А автор — партизан и приходится из него выдавливать информацию.



0



Часто онлайн

790 / 529 / 237

Регистрация: 09.01.2017

Сообщений: 1,820

10.07.2020, 09:48

13

Burk, Я защитил книгу на другом компе с другим пользователем также, как и у govorun, и переслал себе. Своим макросом открыл эту книгу и запроса не было.
Автор темы придет, проверит на своем файле и расскажет нам



0



1813 / 1135 / 346

Регистрация: 11.07.2014

Сообщений: 4,002

10.07.2020, 09:57

14

КостяФедореев, надо было ещё любой запрос поставить в Эта книга в файле на другом компе (a=Msgbox….) и посмотреть будет ли этот запрос.



0



148 / 35 / 6

Регистрация: 01.11.2013

Сообщений: 779

10.07.2020, 19:18

 [ТС]

15

amd48, КостяФедореев, ReadOnly сработало. Спасибо



0



Содержание

  1. Объект FileSystemObject
  2. 1. Создание объекта
  3. 2. Свойства
  4. 2.1. Drives
  5. 3. Методы
  6. 3.1. CreateFolder
  7. 3.2. CopyFile
  8. 3.3. CopyFolder
  9. 3.4. MoveFile
  10. 3.5. MoveFolder
  11. 3.6. DeleteFile
  12. 3.7. DeleteFolder
  13. 3.8. BuildPath
  14. 3.9. GetAbsolutePathName
  15. 3.10. GetBaseName
  16. 3.11. GetExtensionName
  17. 3.12. GetFileName
  18. 3.13. GetParentFolderName
  19. 3.14. GetDriveName
  20. 3.15. DriveExists
  21. 3.16. FileExists
  22. 3.17. FolderExists
  23. 3.18. GetDrive
  24. 3.19. GetFile
  25. 3.20. GetFolder
  26. 3.21. GetSpecialFolder
  27. 3.22. GetTempName
  28. 3.23. CreateTextFile
  29. 3.24. OpenTextFile
  30. 3.25. GetStandardStream
  31. 3.26. GetFileVersion
  32. 4. Объект Drive
  33. 4.1. Создание объекта
  34. 4.2. Свойства
  35. 4.2.1. AvailableSpace
  36. 4.2.2. DriveLetter
  37. 4.2.3. DriveType
  38. 4.2.4. FileSystem
  39. 4.2.5. FreeSpace
  40. 4.2.6. IsReady
  41. 4.2.7. Path
  42. 4.2.8. RootFolder
  43. 4.2.9. SerialNumber
  44. 4.2.10. ShareName
  45. 4.2.11. TotalSize
  46. 4.2.12. VolumeName
  47. 5. Объект File
  48. 5.1. Создание объекта
  49. 5.2. Свойства
  50. 5.2.1. Attributes
  51. 5.2.2. DateCreated
  52. 5.2.3. DateLastAccessed
  53. 5.2.4. DateLastModified
  54. 5.2.5. Drive
  55. 5.2.6. Name
  56. 5.2.7. ParentFolder
  57. 5.2.8. Path
  58. 5.2.9. ShortName
  59. 5.2.10. ShortPath
  60. 5.2.11. Size
  61. 5.2.12. Type
  62. 5.3. Методы
  63. 5.3.1. Copy
  64. 5.3.2. Move
  65. 5.3.3. Delete
  66. 5.3.4. OpenAsTextStream
  67. 6. Объект Folder
  68. 6.1. Создание объекта
  69. 6.2. Свойства
  70. 6.2.1. Attributes
  71. 6.2.2. DateCreated
  72. 6.2.3. DateLastAccessed
  73. 6.2.4. DateLastModified
  74. 6.2.5. Drive
  75. 6.2.6. IsRootFolder
  76. 6.2.7. Name
  77. 6.2.8. ParentFolder
  78. 6.2.9. Path
  79. 6.2.10. ShortName
  80. 6.2.11. ShortPath
  81. 6.2.12. Size
  82. 6.2.13. Type
  83. 6.2.14. SubFolders
  84. 6.2.15. Files
  85. 6.3. Методы
  86. 6.3.1. Copy
  87. 6.3.2. Move
  88. 6.3.3. Delete
  89. 6.3.4. CreateTextFile
  90. 7. Объект TextStream
  91. 7.1. Создание объекта
  92. 7.2. Свойства
  93. 7.2.1. AtEndOfLine
  94. 7.2.2. AtEndOfStream
  95. 7.2.3. Column
  96. 7.2.4. Line
  97. 7.3. Методы
  98. 7.3.1. Close
  99. 7.3.2. Read
  100. 7.3.3. ReadAll
  101. 7.3.4. ReadLine
  102. 7.3.5. Skip
  103. 7.3.6. SkipLine
  104. 7.3.7. Write
  105. 7.3.8. WriteLine
  106. 7.3.9. WriteBlankLines

Объект FileSystemObject

Ниже приведен справочник по объекту FileSystemObject, который умеет работать с файлами, каталогами, файловыми потоками. Данный объект позволяет читать файлы, писать в файлы, получать информацию о файлах и др. Данный объект используется в ОС Windows, в некоторых скриптовых языках.

1. Создание объекта
2. Свойства
    2.1. Drives
3. Методы
    3.1. CreateFolder
    3.2. CopyFile
    3.3. CopyFolder
    3.4. MoveFile
    3.5. MoveFolder
    3.6. DeleteFile
    3.7. DeleteFolder
    3.8. BuildPath
    3.9. GetAbsolutePathName
    3.10. GetBaseName
    3.11. GetExtensionName
    3.12. GetFileName
    3.13. GetParentFolderName
    3.14. GetDriveName
    3.15. DriveExists
    3.16. FileExists
    3.17. FolderExists
    3.18. GetDrive
    3.19. GetFile
    3.20. GetFolder
    3.21. GetSpecialFolder
    3.22. GetTempName
    3.23. CreateTextFile
    3.24. OpenTextFile
    3.25. GetStandardStream
    3.26. GetFileVersion
4. Объект Drive
    4.1. Создание объекта
    4.2. Свойства
        4.2.1. AvailableSpace
        4.2.2. DriveLetter
        4.2.3. DriveType
        4.2.4. FileSystem
        4.2.5. FreeSpace
        4.2.6. IsReady
        4.2.7. Path
        4.2.8. RootFolder
        4.2.9. SerialNumber
        4.2.10. ShareName
        4.2.11. TotalSize
        4.2.12. VolumeName
5. Объект File
    5.1. Создание объекта
    5.2. Свойства
        5.2.1. Attributes
        5.2.2. DateCreated
        5.2.3. DateLastAccessed
        5.2.4. DateLastModified
        5.2.5. Drive
        5.2.6. Name
        5.2.7. ParentFolder
        5.2.8. Path
        5.2.9. ShortName
        5.2.10. ShortPath
        5.2.11. Size
        5.2.12. Type
    5.3. Методы
        5.3.1. Copy
        5.3.2. Move
        5.3.3. Delete
        5.3.4. OpenAsTextStream
6. Объект Folder
    6.1. Создание объекта
    6.2. Свойства
        6.2.1. Attributes
        6.2.2. DateCreated
        6.2.3. DateLastAccessed
        6.2.4. DateLastModified
        6.2.5. Drive
        6.2.6. IsRootFolder
        6.2.7. Name
        6.2.8. ParentFolder
        6.2.9. Path
        6.2.10. ShortName
        6.2.11. ShortPath
        6.2.12. Size
        6.2.13. Type
        6.2.14. SubFolders
        6.2.15. Files
    6.3. Методы
        6.3.1. Copy
        6.3.2. Move
        6.3.3. Delete
        6.3.4. CreateTextFile
7. Объект TextStream
    7.1. Создание объекта
    7.2. Свойства
        7.2.1. AtEndOfLine
        7.2.2. AtEndOfStream
        7.2.3. Column
        7.2.4. Line
    7.3. Методы
        7.3.1. Close
        7.3.2. Read
        7.3.3. ReadAll
        7.3.4. ReadLine
        7.3.5. Skip
        7.3.6. SkipLine
        7.3.7. Write
        7.3.8. WriteLine
        7.3.9. WriteBlankLines

1. Создание объекта

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")

2. Свойства

2.1. Drives

Синтаксис:

Drives

Возвращаемое значение: объект-коллекция «Drives».

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
For Each Drive In FSO.Drives
    MsgBox Drive.DriveLetter
Next

Другой пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Drives = FSO.Drives
MsgBox "Всего дисков - " & Drives.Count
Set DriveC = Drives.Item("C:")
MsgBox "Диск C: имеет метку " & DriveC.VolumeName

3. Методы

3.1. CreateFolder

Синтаксис:

CreateFolder(<Foldername>)

Назначение: создаёт каталог с указанным именем.

Параметры:

  • <Foldername> — строка, путь к каталогу. Если такой каталог уже существует, произойдёт ошибка.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
FSO.CreateFolder "C:New Folder"

3.2. CopyFile

Синтаксис:

CopyFile(<Source>,<Destination>,<Overwrite>)

Назначение: копирует один или несколько файлов.

Параметры:

  • <Source> — строка, путь к источнику копирования (что копировать). В последнем компоненте параметра можно использовать групповые символы «*» и «?».
  • <Destination> — строка, путь назначения (куда копировать).
  • <Overwrite> — необязательный, булево (число). Перезаписывать существующие файлы, или нет. По умолчанию — True (перезаписывать). Если файл, который нужно перезаписать, имеет атрибут read-only, возникнет ошибка (независимо от установки этого параметра).

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
FSO.CopyFile "C:*.bat", "A:", 0

3.3. CopyFolder

Синтаксис:

CopyFolder(<Source>,<Destination>,<Overwrite>)

Назначение: рекурсивно копирует каталог.

Параметры:

  • <Source> — строка, путь к источнику копирования (что копировать). В последнем компоненте параметра можно использовать групповые символы «*» и «?».
  • <Destination> — строка, путь назначения (куда копировать).
  • <Overwrite> — необязательный, булево (число). Перезаписывать существующие файлы, или нет. По умолчанию — True (перезаписывать). Если файл, который нужно перезаписать, имеет атрибут read-only, возникнет ошибка (независимо от установки этого параметра).

Описание: процесс копирования прерывается после первой возникшей ошибки.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
FSO.CopyFolder "C:NewFolder*", "C:TEMP", 0

3.4. MoveFile

Синтаксис:

MoveFile(<Source>,<Destination>)

Назначение: перемещает один или несколько файлов.

Параметры:

  • <Source> — строка, путь к источнику копирования (что копировать). В последнем компоненте параметра можно использовать групповые символы «*» и «?».
  • <Destination> — строка, путь назначения (куда копировать).

Описание: процесс перемещения прерывается после первой возникшей ошибки. Если перемещаемый файл уже существует или является папкой в Destination, возникнет ошибка.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
FSO.MoveFile "C:*.txt", "A:"

3.5. MoveFolder

Синтаксис:

MoveFolder(<Source>,<Destination>)

Назначение: рекурсивно перемещает один или несколько каталогов.

Параметры:

  • <Source> — строка, путь к источнику копирования (что копировать). В последнем компоненте параметра можно использовать групповые символы «*» и «?».
  • <Destination> — строка, путь назначения (куда копировать).

Описание: процесс перемещения прерывается после первой возникшей ошибки. Если перемещаемый каталог уже существует или является файлом в Destination, возникнет ошибка.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
FSO.MoveFolder "C:New Folde*", "C:TEMP"

3.6. DeleteFile

Синтаксис:

DeleteFile(<Filespec>,<Force>)

Назначение: удаляет указанный файл.

Параметры:

  • <Filespec> — строка, путь к файлу. В последнем компоненте параметра можно использовать групповые символы «*» и «?».
  • <Force> — необязательный, булево (число). Определяет, удалять или нет файлы с атрибутом read-only. По умолчанию — False (не удалять).

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
FSO.DeleteFile "A:*", 0

3.7. DeleteFolder

Синтаксис:

DeleteFolder(<Folderspec>,<Force>)

Назначение: удаляет указанную папку.

Параметры:

  • <Folderspec> — строка, путь к папке. В последнем компоненте параметра можно использовать групповые символы «*» и «?».
  • <Force> — необязательный, булево (число). Определяет, удалять или нет файлы с атрибутом read-only. По умолчанию — False (не удалять).

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
FSO.DeleteFolder "A:*", 0

3.8. BuildPath

Синтаксис:

BuildPath(<Path>,<Name>)

Назначение: добавляет к заданному пути новое имя. Если необходимо, вставляется «».

Параметры:

  • <Path> — строка, путь.
  • <Name> — строка, имя файла.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Path = FSO.BuildPath("C:Program Files", "New Folder")
MsgBox Path
Path = FSO.BuildPath("C:Program Files", "New Folder")
MsgBox Path

3.9. GetAbsolutePathName

Синтаксис:

GetAbsolutePathName(<Pathspec>)

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

Параметры:

  • <Pathspec> — строка, относительный путь.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Path = FSO.GetAbsolutePathName("..")
MsgBox Path
Path = FSO.GetAbsolutePathName(".aaabbbccc.txt")
MsgBox Path

3.10. GetBaseName

Синтаксис:

GetBaseName(<Path>)

Назначение: возвращает имя (без расширения) последнего компонента в заданном пути.

Параметры:

  • <Path> — строка, путь.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Name = FSO.GetBaseName("Q:aaabredMySuperFile.txt")
MsgBox Name

3.11. GetExtensionName

Синтаксис:

GetExtensionName(<Path>)

Назначение: возвращает расширение последнего компонента в заданном пути.

Параметры:

  • <Path> — строка, путь.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Name = FSO.GetExtensionName("Q:aaabredMySuperFile.txt")
MsgBox Name

3.12. GetFileName

Синтаксис:

GetFileName(<Path>)

Назначение: возвращает имя (с расширением) последнего компонента в заданном пути.

Параметры:

  • <Path> — строка, путь.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Name = FSO.GetFileName("Q:aaabredMySuperFile.txt")
MsgBox Name

3.13. GetParentFolderName

Синтаксис:

GetParentFolderName(<Path>)

Назначение: возвращает путь к последнему компоненту в заданном пути (его каталог).

Параметры:

  • <Path> — строка, путь.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Name = FSO.GetParentFolderName("Q:aaabredMySuperFile.txt")
MsgBox Name

3.14. GetDriveName

Синтаксис:

GetDriveName(<Path>)

Назначение: возвращает имя диска в заданном пути.

Параметры:

  • <Path> — строка, путь.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Name = FSO.GetDriveName("X:aaabredMySuperFile.txt")
MsgBox Name

3.15. DriveExists

Синтаксис:

DriveExists(<Drivespec>)

Назначение: возвращает True, если указанный диск сущесвтвует, и False в противном случае.

Параметры:

  • <Drivespec> — строка, путь.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Disk = "A:"
MsgBox "Диск " & Disk & " существует = " & FSO.DriveExists(Disk)
Disk = "Q:"
MsgBox "Диск " & Disk & " существует = " & FSO.DriveExists(Disk)

3.16. FileExists

Синтаксис:

FileExists(<Filespec>)

Назначение: возвращает True, если указанный файл сущесвтвует, и False в противном случае.

Параметры:

  • <Filespec> — строка, путь.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
File = "C:Program Files1Cv77BIN1cv7s.exe"
MsgBox "Файл " & File & " существует = " & FSO.FileExists(File)
File = "С:1.txt"
MsgBox "Файл " & File & " существует = " & FSO.FileExists(File)

3.17. FolderExists

Синтаксис:

FolderExists(<Folderspec>)

Назначение: возвращает True, если указанный каталог сущесвтвует, и False в противном случае.

Параметры:

  • <Folderspec> — строка, путь.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Folder = "C:Program Files"
MsgBox "Каталог " & Folder & " существует = " & FSO.FolderExists(Folder)
Folder = "С:ProgramFiles"
MsgBox "Каталог " & Folder & " существует = " & FSO.FolderExists(Folder)

3.18. GetDrive

Синтаксис:

GetDrive(<Folderspec>)

Назначение: возвращает объект «Drive» по указанному имени или пути.

Параметры:

  • <Folderspec> — строка, имя диска или путь к корневому каталогу диска, возможно UNC-путь.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Drive = FSO.GetDrive("C:")
MsgBox Drive.FileSystem
Set Drive = FSO.GetDrive("C:")
MsgBox Drive.FileSystem
Set Drive = FSO.GetDrive("\Server1C_Predpr")
MsgBox Drive.FileSystem

3.19. GetFile

Синтаксис:

GetFile(<Filespec>)

Назначение: возвращает объект «File» по указанному пути.

Параметры:

  • <Filespec> — строка, путь.

Описание: если файл не существует, произойдёт ошибка.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:autoexec.bat")
MsgBox File.Size

3.20. GetFolder

Синтаксис:

GetFolder(<Folderspec>)

Назначение: возвращает объект «Folder» по указанному пути.

Параметры:

  • <Folderspec> — строка, путь.

Описание: если каталог не существует, произойдёт ошибка.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:Program Files")
MsgBox Folder.ShortName

3.21. GetSpecialFolder

Синтаксис:

GetSpecialFolder(<Folderspec>)

Назначение: возвращает объект «Folder» для некоторых специальных папок Windows.

Параметры:

  • <Folderspec> — число, определяет специальную папку. Возможные значения:
    • 0 — Каталог Windows.
    • 1 — Системный каталог библиотек и драйверов.
    • 2 — Каталог временных файлов, путь к которому хранится в переменной среды «TMP».

Описание: если каталог не существует, произойдёт ошибка.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
For i=0 To 2
    Set Folder = FSO.GetSpecialFolder(i)
    MsgBox Folder.Path
Next

3.22. GetTempName

Синтаксис:

GetTempName()

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

Параметры: нет.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
MsgBox FSO.GetTempName()

3.23. CreateTextFile

Синтаксис:

CreateTextFile(<Filename>,<Overwrite>,<Unicode>)

Назначение: создаёт новый текстовый файл и возвращает объект «TextStream», указывающий на него.

Параметры:

  • <Filename> — строка, путь к файлу.
  • <Overwrite> — необязательный, булево (число). Перезаписывать файл, если он существует (True), или нет (False). По умолчанию — False. Если указано False и файл существует — произойдёт ошибка.
  • <Unicode> — необязательный, булево (число). Файл в формате Unicode (True), или ASCII (False). По умолчанию — False.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set TextStream = FSO.CreateTextFile("C:Test.txt")

3.24. OpenTextFile

Синтаксис:

OpenTextFile(<Filename>,<Iomode>,<Create>,<Format>)

Назначение: открывает текстовый файл и возвращает объект «TextStream», указывающий на него.

Параметры:

  • <Filename> — строка, путь к файлу.
  • <Iomode> — необязательный, число. Возможные значения:
    • 1 — Открыть файл только для чтения.
    • 2 — Открыть файл для записи. Если файл уже существовал, его содержимое теряется.
    • 8 — Открыть файл для добавления. Если файл уже существовал, информация будет дописываться в конец файла.
  • <Create> — необязательный, булево (число). Создавать файл, если он не существует (True), или нет (False). По умолчанию — False.
  • <Format> — необязательный, число. Возможные значения:
    • -2 — Открыть файл в формате, используемом системой по умолчанию.
    • -1 — Открыть файл в формате Unicode.
    • 0 — Открыть файл в формате ASCII (по умолчанию).

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set TextStream = FSO.OpenTextFile("C:Test.txt", 2, True)

3.25. GetStandardStream

Синтаксис:

GetStandardStream(<StandardStreamType>,<Unicode>)

Назначение: возвращает объект «TextStream», ассоциированный с потоком «StdIn», «StdOut» или «StdErr».

Параметры:

  • <StandardStreamType> — число, определяет поток. Возможные значения:
    • 0 — StdIn.
    • 1 — StdOut.
    • 2 — StdErr.
  • <Unicode> — необязательный, булево (число). True — формат Unicode, False — ASCII. По умолчанию — False.

Описание: метод применим при запуске административного скрипта в консоли с помощью CScript.exe.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set stdout = fso.GetStandardStream(1)
stdout.WriteLine "Hello, VBScript."

3.26. GetFileVersion

Синтаксис:

GetFileVersion(<Path>)

Назначение: возвращает номер версии исполняемого файла (строка).

Параметры:

  • <Path> — строка, путь к файлу.

Описание: метод возвращает информацию, которую можно просмотреть на вкладке «Версия» палитры свойств файла в проводнике.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
MsgBox FSO.GetFileVersion("C:Program Files1Cv77BIN1cv7s.exe")
MsgBox FSO.GetFileVersion("C:Program Files1cv8bin1cv8.exe")

4. Объект Drive

4.1. Создание объекта

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set DriveC = FSO.Drives.Item("C:")

4.2. Свойства

4.2.1. AvailableSpace

Синтаксис:

AvailableSpace

Возвращаемое значение: число — количество доступного для пользователя места на диске в байтах.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set DriveC = FSO.GetDrive("C:")
Str = "Диск C:" & vbCrLf & _
"AvailableSpace: " & DriveC.AvailableSpace & vbCrLf & _
"DriveLetter: " & DriveC.DriveLetter & vbCrLf & _
"DriveType: " & DriveC.DriveType & vbCrLf & _
"FileSystem: " & DriveC.FileSystem & vbCrLf & _
"FreeSpace: " & DriveC.FreeSpace & vbCrLf & _
"IsReady: " & DriveC.IsReady & vbCrLf & _
"Path: " & DriveC.Path & vbCrLf & _
"RootFolder (Path): " & DriveC.RootFolder.Path & vbCrLf & _
"SerialNumber: " & DriveC.SerialNumber & vbCrLf & _
"ShareName: " & DriveC.ShareName & vbCrLf & _
"TotalSize: " & DriveC.TotalSize & vbCrLf & _
"VolumeName: " & DriveC.VolumeName
MsgBox Str

4.2.2. DriveLetter

Синтаксис:

DriveLetter

Возвращаемое значение: строка — буква, ассоциированная с ресурсом.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set DriveC = FSO.GetDrive("C:")
Str = "Диск C:" & vbCrLf & _
"AvailableSpace: " & DriveC.AvailableSpace & vbCrLf & _
"DriveLetter: " & DriveC.DriveLetter & vbCrLf & _
"DriveType: " & DriveC.DriveType & vbCrLf & _
"FileSystem: " & DriveC.FileSystem & vbCrLf & _
"FreeSpace: " & DriveC.FreeSpace & vbCrLf & _
"IsReady: " & DriveC.IsReady & vbCrLf & _
"Path: " & DriveC.Path & vbCrLf & _
"RootFolder (Path): " & DriveC.RootFolder.Path & vbCrLf & _
"SerialNumber: " & DriveC.SerialNumber & vbCrLf & _
"ShareName: " & DriveC.ShareName & vbCrLf & _
"TotalSize: " & DriveC.TotalSize & vbCrLf & _
"VolumeName: " & DriveC.VolumeName
MsgBox Str

4.2.3. DriveType

Синтаксис:

DriveType

Возвращаемое значение: число — определяет тип ресурса. Возможные значения:

  • 0 — неизвестное устройство.
  • 1 — устройство со сменным носителем.
  • 2 — жёсткий диск.
  • 3 — сетевой диск.
  • 4 — CD-ROM.
  • 5 — RAM-диск.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set DriveC = FSO.GetDrive("C:")
Str = "Диск C:" & vbCrLf & _
"AvailableSpace: " & DriveC.AvailableSpace & vbCrLf & _
"DriveLetter: " & DriveC.DriveLetter & vbCrLf & _
"DriveType: " & DriveC.DriveType & vbCrLf & _
"FileSystem: " & DriveC.FileSystem & vbCrLf & _
"FreeSpace: " & DriveC.FreeSpace & vbCrLf & _
"IsReady: " & DriveC.IsReady & vbCrLf & _
"Path: " & DriveC.Path & vbCrLf & _
"RootFolder (Path): " & DriveC.RootFolder.Path & vbCrLf & _
"SerialNumber: " & DriveC.SerialNumber & vbCrLf & _
"ShareName: " & DriveC.ShareName & vbCrLf & _
"TotalSize: " & DriveC.TotalSize & vbCrLf & _
"VolumeName: " & DriveC.VolumeName
MsgBox Str

4.2.4. FileSystem

Синтаксис:

FileSystem

Возвращаемое значение: cтрока — тип файловой системы (FAT, NTFS или CDFS).

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set DriveC = FSO.GetDrive("C:")
Str = "Диск C:" & vbCrLf & _
"AvailableSpace: " & DriveC.AvailableSpace & vbCrLf & _
"DriveLetter: " & DriveC.DriveLetter & vbCrLf & _
"DriveType: " & DriveC.DriveType & vbCrLf & _
"FileSystem: " & DriveC.FileSystem & vbCrLf & _
"FreeSpace: " & DriveC.FreeSpace & vbCrLf & _
"IsReady: " & DriveC.IsReady & vbCrLf & _
"Path: " & DriveC.Path & vbCrLf & _
"RootFolder (Path): " & DriveC.RootFolder.Path & vbCrLf & _
"SerialNumber: " & DriveC.SerialNumber & vbCrLf & _
"ShareName: " & DriveC.ShareName & vbCrLf & _
"TotalSize: " & DriveC.TotalSize & vbCrLf & _
"VolumeName: " & DriveC.VolumeName
MsgBox Str

4.2.5. FreeSpace

Синтаксис:

FreeSpace

Возвращаемое значение: число — количество свободного места на диске в байтах.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set DriveC = FSO.GetDrive("C:")
Str = "Диск C:" & vbCrLf & _
"AvailableSpace: " & DriveC.AvailableSpace & vbCrLf & _
"DriveLetter: " & DriveC.DriveLetter & vbCrLf & _
"DriveType: " & DriveC.DriveType & vbCrLf & _
"FileSystem: " & DriveC.FileSystem & vbCrLf & _
"FreeSpace: " & DriveC.FreeSpace & vbCrLf & _
"IsReady: " & DriveC.IsReady & vbCrLf & _
"Path: " & DriveC.Path & vbCrLf & _
"RootFolder (Path): " & DriveC.RootFolder.Path & vbCrLf & _
"SerialNumber: " & DriveC.SerialNumber & vbCrLf & _
"ShareName: " & DriveC.ShareName & vbCrLf & _
"TotalSize: " & DriveC.TotalSize & vbCrLf & _
"VolumeName: " & DriveC.VolumeName
MsgBox Str

4.2.6. IsReady

Синтаксис:

IsReady

Возвращаемое значение: булево (число) — True, если устройство готово, иначе — False. Актуально для устройства со сменным носителем или CD-ROM.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set DriveC = FSO.GetDrive("C:")
Str = "Диск C:" & vbCrLf & _
"AvailableSpace: " & DriveC.AvailableSpace & vbCrLf & _
"DriveLetter: " & DriveC.DriveLetter & vbCrLf & _
"DriveType: " & DriveC.DriveType & vbCrLf & _
"FileSystem: " & DriveC.FileSystem & vbCrLf & _
"FreeSpace: " & DriveC.FreeSpace & vbCrLf & _
"IsReady: " & DriveC.IsReady & vbCrLf & _
"Path: " & DriveC.Path & vbCrLf & _
"RootFolder (Path): " & DriveC.RootFolder.Path & vbCrLf & _
"SerialNumber: " & DriveC.SerialNumber & vbCrLf & _
"ShareName: " & DriveC.ShareName & vbCrLf & _
"TotalSize: " & DriveC.TotalSize & vbCrLf & _
"VolumeName: " & DriveC.VolumeName
MsgBox Str

4.2.7. Path

Синтаксис:

Path

Возвращаемое значение: строка — путь к диску (например, «C:», но не «C:»).

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set DriveC = FSO.GetDrive("C:")
Str = "Диск C:" & vbCrLf & _
"AvailableSpace: " & DriveC.AvailableSpace & vbCrLf & _
"DriveLetter: " & DriveC.DriveLetter & vbCrLf & _
"DriveType: " & DriveC.DriveType & vbCrLf & _
"FileSystem: " & DriveC.FileSystem & vbCrLf & _
"FreeSpace: " & DriveC.FreeSpace & vbCrLf & _
"IsReady: " & DriveC.IsReady & vbCrLf & _
"Path: " & DriveC.Path & vbCrLf & _
"RootFolder (Path): " & DriveC.RootFolder.Path & vbCrLf & _
"SerialNumber: " & DriveC.SerialNumber & vbCrLf & _
"ShareName: " & DriveC.ShareName & vbCrLf & _
"TotalSize: " & DriveC.TotalSize & vbCrLf & _
"VolumeName: " & DriveC.VolumeName
MsgBox Str

4.2.8. RootFolder

Синтаксис:

RootFolder

Возвращаемое значение: объект «Folder», соответствующий корневому каталогу диска.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set DriveC = FSO.GetDrive("C:")
Str = "Диск C:" & vbCrLf & _
"AvailableSpace: " & DriveC.AvailableSpace & vbCrLf & _
"DriveLetter: " & DriveC.DriveLetter & vbCrLf & _
"DriveType: " & DriveC.DriveType & vbCrLf & _
"FileSystem: " & DriveC.FileSystem & vbCrLf & _
"FreeSpace: " & DriveC.FreeSpace & vbCrLf & _
"IsReady: " & DriveC.IsReady & vbCrLf & _
"Path: " & DriveC.Path & vbCrLf & _
"RootFolder (Path): " & DriveC.RootFolder.Path & vbCrLf & _
"SerialNumber: " & DriveC.SerialNumber & vbCrLf & _
"ShareName: " & DriveC.ShareName & vbCrLf & _
"TotalSize: " & DriveC.TotalSize & vbCrLf & _
"VolumeName: " & DriveC.VolumeName
MsgBox Str

4.2.9. SerialNumber

Синтаксис:

SerialNumber

Возвращаемое значение: число — десятичный серийный номер диска.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set DriveC = FSO.GetDrive("C:")
Str = "Диск C:" & vbCrLf & _
"AvailableSpace: " & DriveC.AvailableSpace & vbCrLf & _
"DriveLetter: " & DriveC.DriveLetter & vbCrLf & _
"DriveType: " & DriveC.DriveType & vbCrLf & _
"FileSystem: " & DriveC.FileSystem & vbCrLf & _
"FreeSpace: " & DriveC.FreeSpace & vbCrLf & _
"IsReady: " & DriveC.IsReady & vbCrLf & _
"Path: " & DriveC.Path & vbCrLf & _
"RootFolder (Path): " & DriveC.RootFolder.Path & vbCrLf & _
"SerialNumber: " & DriveC.SerialNumber & vbCrLf & _
"ShareName: " & DriveC.ShareName & vbCrLf & _
"TotalSize: " & DriveC.TotalSize & vbCrLf & _
"VolumeName: " & DriveC.VolumeName
MsgBox Str

Синтаксис:

ShareName

Возвращаемое значение: строка — сетевое имя диска, если диск сетевой (иначе — пустая строка).

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set DriveC = FSO.GetDrive("C:")
Str = "Диск C:" & vbCrLf & _
"AvailableSpace: " & DriveC.AvailableSpace & vbCrLf & _
"DriveLetter: " & DriveC.DriveLetter & vbCrLf & _
"DriveType: " & DriveC.DriveType & vbCrLf & _
"FileSystem: " & DriveC.FileSystem & vbCrLf & _
"FreeSpace: " & DriveC.FreeSpace & vbCrLf & _
"IsReady: " & DriveC.IsReady & vbCrLf & _
"Path: " & DriveC.Path & vbCrLf & _
"RootFolder (Path): " & DriveC.RootFolder.Path & vbCrLf & _
"SerialNumber: " & DriveC.SerialNumber & vbCrLf & _
"ShareName: " & DriveC.ShareName & vbCrLf & _
"TotalSize: " & DriveC.TotalSize & vbCrLf & _
"VolumeName: " & DriveC.VolumeName
MsgBox Str

4.2.11. TotalSize

Синтаксис:

TotalSize

Возвращаемое значение: число — общий объём диска в байтах.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set DriveC = FSO.GetDrive("C:")
Str = "Диск C:" & vbCrLf & _
"AvailableSpace: " & DriveC.AvailableSpace & vbCrLf & _
"DriveLetter: " & DriveC.DriveLetter & vbCrLf & _
"DriveType: " & DriveC.DriveType & vbCrLf & _
"FileSystem: " & DriveC.FileSystem & vbCrLf & _
"FreeSpace: " & DriveC.FreeSpace & vbCrLf & _
"IsReady: " & DriveC.IsReady & vbCrLf & _
"Path: " & DriveC.Path & vbCrLf & _
"RootFolder (Path): " & DriveC.RootFolder.Path & vbCrLf & _
"SerialNumber: " & DriveC.SerialNumber & vbCrLf & _
"ShareName: " & DriveC.ShareName & vbCrLf & _
"TotalSize: " & DriveC.TotalSize & vbCrLf & _
"VolumeName: " & DriveC.VolumeName
MsgBox Str

4.2.12. VolumeName

Синтаксис:

VolumeName

Возвращаемое значение: строка — метка тома диска.

Замечание: чтение и запись.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set DriveC = FSO.GetDrive("C:")
Str = "Диск C:" & vbCrLf & _
"AvailableSpace: " & DriveC.AvailableSpace & vbCrLf & _
"DriveLetter: " & DriveC.DriveLetter & vbCrLf & _
"DriveType: " & DriveC.DriveType & vbCrLf & _
"FileSystem: " & DriveC.FileSystem & vbCrLf & _
"FreeSpace: " & DriveC.FreeSpace & vbCrLf & _
"IsReady: " & DriveC.IsReady & vbCrLf & _
"Path: " & DriveC.Path & vbCrLf & _
"RootFolder (Path): " & DriveC.RootFolder.Path & vbCrLf & _
"SerialNumber: " & DriveC.SerialNumber & vbCrLf & _
"ShareName: " & DriveC.ShareName & vbCrLf & _
"TotalSize: " & DriveC.TotalSize & vbCrLf & _
"VolumeName: " & DriveC.VolumeName
MsgBox Str

5. Объект File

5.1. Создание объекта

Пример №1:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:autoexec.bat")

Пример №2:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:")
Set File = Folder.Files("autoexec.bat")

Пример №3:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:")
Set File = Folder.Files.Item("autoexec.bat")

5.2. Свойства

5.2.1. Attributes

Синтаксис:

Attributes

Возвращаемое значение: число, набор флагов атрибутов файла. Флаги:

  • 0 — Normal. Обычный файл (нет атрибутов).
  • 1 — ReadOnly. Файл только для чтения. Чтение и запись.
  • 2 — Hidden. Скрытый. Чтение и запись.
  • 4 — System. Системный. Чтение и запись.
  • 8 — Volume. Диск. Только чтение.
  • 16 — Directory. Папка или файл. Только чтение.
  • 32 — Archive. Архивный. Чтение и запись.
  • 1024 — Alias. Ссылка или ярлык. Только чтение.
  • 2048 — Compressed. Сжатый. Только чтение.

Замечание: чтение и запись или только чтение, в зависимости от атрибута.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:autoexec.bat")
Attrs = File.Attributes
Set Dict = CreateObject("Scripting.Dictionary")
Dict.Add "ReadOnly", 0
Dict.Add "Hidden", 0
Dict.Add "System", 0
Dict.Add "Volume", 0
Dict.Add "Directory", 0
Dict.Add "Archive", 0
Dict.Add "Alias", 0
Dict.Add "Compressed", 0
If Attrs And 2048 Then
    Dict.Item("Compressed") = 1
End If
If Attrs And 1024 Then
    Dict.Item("Alias") = 1
End If
If Attrs And 32 Then
    Dict.Item("Archive") = 1
End If
If Attrs And 16 Then
    Dict.Item("Directory") = 1
End If
If Attrs And 8 Then
    Dict.Item("Volume") = 1
End If
If Attrs And 4 Then
    Dict.Item("System") = 1
End If
If Attrs And 2 Then
    Dict.Item("Hidden") = 1
End If
If Attrs And 1 Then
    Dict.Item("ReadOnly") = 1
End If
Str = "Атрибуты файла """ & File.Path & """:" & vbCrLf
For Each Attr In Dict
    Str = Str & Attr & " = " & Dict.Item(Attr) & vbCrLf
Next
MsgBox Str

5.2.2. DateCreated

Синтаксис:

DateCreated

Возвращаемое значение: дата создания файла.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:autoexec.bat")
Str = vbNullString
Str = Str & "Дата создания - " & File.DateCreated & vbCrLf
Str = Str & "Дата последнего доступа - " & File.DateLastAccessed & vbCrLf
Str = Str & "Дата последней модификации - " & File.DateLastModified & vbCrLf
Str = Str & "Диск - " & File.Drive.DriveLetter & vbCrLf
Str = Str & "Имя - " & File.Name & vbCrLf
Str = Str & "Родительский каталог - " & File.ParentFolder.Path & vbCrLf
Str = Str & "Путь - " & File.Path & vbCrLf
Str = Str & "Короткое имя - " & File.ShortName & vbCrLf
Str = Str & "Путь в формате 8.3 - " & File.ShortPath & vbCrLf
Str = Str & "Размер - " & File.Size & vbCrLf
Str = Str & "Тип файла - " & File.Type
MsgBox Str

5.2.3. DateLastAccessed

Синтаксис:

DateLastAccessed

Возвращаемое значение: дата последнего доступа к файлу.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:autoexec.bat")
Str = vbNullString
Str = Str & "Дата создания - " & File.DateCreated & vbCrLf
Str = Str & "Дата последнего доступа - " & File.DateLastAccessed & vbCrLf
Str = Str & "Дата последней модификации - " & File.DateLastModified & vbCrLf
Str = Str & "Диск - " & File.Drive.DriveLetter & vbCrLf
Str = Str & "Имя - " & File.Name & vbCrLf
Str = Str & "Родительский каталог - " & File.ParentFolder.Path & vbCrLf
Str = Str & "Путь - " & File.Path & vbCrLf
Str = Str & "Короткое имя - " & File.ShortName & vbCrLf
Str = Str & "Путь в формате 8.3 - " & File.ShortPath & vbCrLf
Str = Str & "Размер - " & File.Size & vbCrLf
Str = Str & "Тип файла - " & File.Type
MsgBox Str

5.2.4. DateLastModified

Синтаксис:

DateLastModified

Возвращаемое значение: дата последней модификации файла.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:autoexec.bat")
Str = vbNullString
Str = Str & "Дата создания - " & File.DateCreated & vbCrLf
Str = Str & "Дата последнего доступа - " & File.DateLastAccessed & vbCrLf
Str = Str & "Дата последней модификации - " & File.DateLastModified & vbCrLf
Str = Str & "Диск - " & File.Drive.DriveLetter & vbCrLf
Str = Str & "Имя - " & File.Name & vbCrLf
Str = Str & "Родительский каталог - " & File.ParentFolder.Path & vbCrLf
Str = Str & "Путь - " & File.Path & vbCrLf
Str = Str & "Короткое имя - " & File.ShortName & vbCrLf
Str = Str & "Путь в формате 8.3 - " & File.ShortPath & vbCrLf
Str = Str & "Размер - " & File.Size & vbCrLf
Str = Str & "Тип файла - " & File.Type
MsgBox Str

5.2.5. Drive

Синтаксис:

Drive

Возвращаемое значение: объект «Drive» диска, на котором находится файл.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:autoexec.bat")
Str = vbNullString
Str = Str & "Дата создания - " & File.DateCreated & vbCrLf
Str = Str & "Дата последнего доступа - " & File.DateLastAccessed & vbCrLf
Str = Str & "Дата последней модификации - " & File.DateLastModified & vbCrLf
Str = Str & "Диск - " & File.Drive.DriveLetter & vbCrLf
Str = Str & "Имя - " & File.Name & vbCrLf
Str = Str & "Родительский каталог - " & File.ParentFolder.Path & vbCrLf
Str = Str & "Путь - " & File.Path & vbCrLf
Str = Str & "Короткое имя - " & File.ShortName & vbCrLf
Str = Str & "Путь в формате 8.3 - " & File.ShortPath & vbCrLf
Str = Str & "Размер - " & File.Size & vbCrLf
Str = Str & "Тип файла - " & File.Type
MsgBox Str

5.2.6. Name

Синтаксис:

Name

Возвращаемое значение: имя файла.

Замечание: чтение и запись.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:autoexec.bat")
Str = vbNullString
Str = Str & "Дата создания - " & File.DateCreated & vbCrLf
Str = Str & "Дата последнего доступа - " & File.DateLastAccessed & vbCrLf
Str = Str & "Дата последней модификации - " & File.DateLastModified & vbCrLf
Str = Str & "Диск - " & File.Drive.DriveLetter & vbCrLf
Str = Str & "Имя - " & File.Name & vbCrLf
Str = Str & "Родительский каталог - " & File.ParentFolder.Path & vbCrLf
Str = Str & "Путь - " & File.Path & vbCrLf
Str = Str & "Короткое имя - " & File.ShortName & vbCrLf
Str = Str & "Путь в формате 8.3 - " & File.ShortPath & vbCrLf
Str = Str & "Размер - " & File.Size & vbCrLf
Str = Str & "Тип файла - " & File.Type
MsgBox Str

5.2.7. ParentFolder

Синтаксис:

ParentFolder

Возвращаемое значение: объект «Folder» родительского каталога.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:autoexec.bat")
Str = vbNullString
Str = Str & "Дата создания - " & File.DateCreated & vbCrLf
Str = Str & "Дата последнего доступа - " & File.DateLastAccessed & vbCrLf
Str = Str & "Дата последней модификации - " & File.DateLastModified & vbCrLf
Str = Str & "Диск - " & File.Drive.DriveLetter & vbCrLf
Str = Str & "Имя - " & File.Name & vbCrLf
Str = Str & "Родительский каталог - " & File.ParentFolder.Path & vbCrLf
Str = Str & "Путь - " & File.Path & vbCrLf
Str = Str & "Короткое имя - " & File.ShortName & vbCrLf
Str = Str & "Путь в формате 8.3 - " & File.ShortPath & vbCrLf
Str = Str & "Размер - " & File.Size & vbCrLf
Str = Str & "Тип файла - " & File.Type
MsgBox Str

5.2.8. Path

Синтаксис:

Path

Возвращаемое значение: полный путь к файлу.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:autoexec.bat")
Str = vbNullString
Str = Str & "Дата создания - " & File.DateCreated & vbCrLf
Str = Str & "Дата последнего доступа - " & File.DateLastAccessed & vbCrLf
Str = Str & "Дата последней модификации - " & File.DateLastModified & vbCrLf
Str = Str & "Диск - " & File.Drive.DriveLetter & vbCrLf
Str = Str & "Имя - " & File.Name & vbCrLf
Str = Str & "Родительский каталог - " & File.ParentFolder.Path & vbCrLf
Str = Str & "Путь - " & File.Path & vbCrLf
Str = Str & "Короткое имя - " & File.ShortName & vbCrLf
Str = Str & "Путь в формате 8.3 - " & File.ShortPath & vbCrLf
Str = Str & "Размер - " & File.Size & vbCrLf
Str = Str & "Тип файла - " & File.Type
MsgBox Str

5.2.9. ShortName

Синтаксис:

ShortName

Возвращаемое значение: короткое имя файла в формате 8.3.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:autoexec.bat")
Str = vbNullString
Str = Str & "Дата создания - " & File.DateCreated & vbCrLf
Str = Str & "Дата последнего доступа - " & File.DateLastAccessed & vbCrLf
Str = Str & "Дата последней модификации - " & File.DateLastModified & vbCrLf
Str = Str & "Диск - " & File.Drive.DriveLetter & vbCrLf
Str = Str & "Имя - " & File.Name & vbCrLf
Str = Str & "Родительский каталог - " & File.ParentFolder.Path & vbCrLf
Str = Str & "Путь - " & File.Path & vbCrLf
Str = Str & "Короткое имя - " & File.ShortName & vbCrLf
Str = Str & "Путь в формате 8.3 - " & File.ShortPath & vbCrLf
Str = Str & "Размер - " & File.Size & vbCrLf
Str = Str & "Тип файла - " & File.Type
MsgBox Str

5.2.10. ShortPath

Синтаксис:

ShortPath

Возвращаемое значение: короткий путь к файлу в формате 8.3.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:autoexec.bat")
Str = vbNullString
Str = Str & "Дата создания - " & File.DateCreated & vbCrLf
Str = Str & "Дата последнего доступа - " & File.DateLastAccessed & vbCrLf
Str = Str & "Дата последней модификации - " & File.DateLastModified & vbCrLf
Str = Str & "Диск - " & File.Drive.DriveLetter & vbCrLf
Str = Str & "Имя - " & File.Name & vbCrLf
Str = Str & "Родительский каталог - " & File.ParentFolder.Path & vbCrLf
Str = Str & "Путь - " & File.Path & vbCrLf
Str = Str & "Короткое имя - " & File.ShortName & vbCrLf
Str = Str & "Путь в формате 8.3 - " & File.ShortPath & vbCrLf
Str = Str & "Размер - " & File.Size & vbCrLf
Str = Str & "Тип файла - " & File.Type
MsgBox Str

5.2.11. Size

Синтаксис:

Size

Возвращаемое значение: размер файла в байтах.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:autoexec.bat")
Str = vbNullString
Str = Str & "Дата создания - " & File.DateCreated & vbCrLf
Str = Str & "Дата последнего доступа - " & File.DateLastAccessed & vbCrLf
Str = Str & "Дата последней модификации - " & File.DateLastModified & vbCrLf
Str = Str & "Диск - " & File.Drive.DriveLetter & vbCrLf
Str = Str & "Имя - " & File.Name & vbCrLf
Str = Str & "Родительский каталог - " & File.ParentFolder.Path & vbCrLf
Str = Str & "Путь - " & File.Path & vbCrLf
Str = Str & "Короткое имя - " & File.ShortName & vbCrLf
Str = Str & "Путь в формате 8.3 - " & File.ShortPath & vbCrLf
Str = Str & "Размер - " & File.Size & vbCrLf
Str = Str & "Тип файла - " & File.Type
MsgBox Str

5.2.12. Type

Синтаксис:

Type

Возвращаемое значение: тип файла. Информация, похожая на ту, которую можно увидеть в палитре свойств файла в проводнике.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:autoexec.bat")
Str = vbNullString
Str = Str & "Дата создания - " & File.DateCreated & vbCrLf
Str = Str & "Дата последнего доступа - " & File.DateLastAccessed & vbCrLf
Str = Str & "Дата последней модификации - " & File.DateLastModified & vbCrLf
Str = Str & "Диск - " & File.Drive.DriveLetter & vbCrLf
Str = Str & "Имя - " & File.Name & vbCrLf
Str = Str & "Родительский каталог - " & File.ParentFolder.Path & vbCrLf
Str = Str & "Путь - " & File.Path & vbCrLf
Str = Str & "Короткое имя - " & File.ShortName & vbCrLf
Str = Str & "Путь в формате 8.3 - " & File.ShortPath & vbCrLf
Str = Str & "Размер - " & File.Size & vbCrLf
Str = Str & "Тип файла - " & File.Type
MsgBox Str

5.3. Методы

5.3.1. Copy

Синтаксис:

Copy(<Destination>,<Overwrite>)

Назначение: копирует файл в указанное место.

Параметры:

  • <Destination> — строка, путь (куда копировать).
  • <Overwrite> — необязательный, булево (число). Заменять файл, если он существует (True), или нет (False)

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:autoexec.bat")
File.Copy "D:"
File.Copy "D:Copy of autoexec.bat"

5.3.2. Move

Синтаксис:

Move(<Destination>)

Назначение: перемещает файл в указанное место.

Параметры:

  • <Destination> — строка, путь (куда перемещать).

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:autoexec.bat")
File.Move "D:"
'File.Move "D:Copy of autoexec.bat"

5.3.3. Delete

Синтаксис:

Delete(<Force>)

Назначение: удаляет файл.

Параметры:

  • <Force> — необязательный, булево (число). Удалять файл, если он имеет атрибут «только для чтения» (True), или нет (False).

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:Test.txt")
File.Delete

5.3.4. OpenAsTextStream

Синтаксис:

OpenAsTextStream(<Iomode>,<Format>)

Назначение: открывает текстовый файл и возвращает объект «TextStream», указывающий на него.

Параметры:

  • <Iomode> — необязательный, число. Возможные значения:
    • 1 — Открыть файл только для чтения.
    • 2 — Открыть файл для записи. Если файл уже существовал, его содержимое теряется.
    • 8 — Открыть файл для добавления. Если файл уже существовал, информация будет дописываться в конец файла.
  • <Format> — необязательный, число. Возможные значения:
    • -2 — Открыть файл в формате, используемом системой по умолчанию.
    • -1 — Открыть файл в формате Unicode.
    • 0 — Открыть файл в формате ASCII (по умолчанию).

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:boot.ini")
Set TextStream = File.OpenAsTextStream(1)
MsgBox TextStream.ReadAll()
TextStream.Close

6. Объект Folder

6.1. Создание объекта

Пример №1:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:Program Files")

Пример №2:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetSpecialFolder(0)

Пример №3:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set DriveC = FSO.GetDrive("C:")
Set Folder = DriveC.RootFolder

Пример №4:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:Program Files")
For Each SubFolder In Folder.SubFolders
    WScript.Echo SubFolder.Name
Next

6.2. Свойства

6.2.1. Attributes

Синтаксис:

Attributes

Возвращаемое значение: число, набор флагов атрибутов папки. Флаги:

  • 0 — Normal. Обычный файл (нет атрибутов).
  • 1 — ReadOnly. Файл только для чтения. Чтение и запись.
  • 2 — Hidden. Скрытый. Чтение и запись.
  • 4 — System. Системный. Чтение и запись.
  • 8 — Volume. Диск. Только чтение.
  • 16 — Directory. Папка или файл. Только чтение.
  • 32 — Archive. Архивный. Чтение и запись.
  • 1024 — Alias. Ссылка или ярлык. Только чтение.
  • 2048 — Compressed. Сжатый. Только чтение.

Замечание: чтение и запись или только чтение, в зависимости от атрибута.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:Program Files")
Attrs = Folder.Attributes
Set Dict = CreateObject("Scripting.Dictionary")
Dict.Add "ReadOnly", 0
Dict.Add "Hidden", 0
Dict.Add "System", 0
Dict.Add "Volume", 0
Dict.Add "Directory", 0
Dict.Add "Archive", 0
Dict.Add "Alias", 0
Dict.Add "Compressed", 0
If Attrs And 2048 Then
    Dict.Item("Compressed") = 1
End If
If Attrs And 1024 Then
    Dict.Item("Alias") = 1
End If
If Attrs And 32 Then
    Dict.Item("Archive") = 1
End If
If Attrs And 16 Then
    Dict.Item("Directory") = 1
End If
If Attrs And 8 Then
    Dict.Item("Volume") = 1
End If
If Attrs And 4 Then
    Dict.Item("System") = 1
End If
If Attrs And 2 Then
    Dict.Item("Hidden") = 1
End If
If Attrs And 1 Then
    Dict.Item("ReadOnly") = 1
End If
Str = "Атрибуты папки """ & Folder.Path & """:" & vbCrLf
For Each Attr In Dict
    Str = Str & Attr & " = " & Dict.Item(Attr) & vbCrLf
Next
MsgBox Str

6.2.2. DateCreated

Синтаксис:

DateCreated

Возвращаемое значение: дата создания каталога.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:Program Files")
Str = vbNullString
Str = Str & "Дата создания - " & Folder.DateCreated & vbCrLf
Str = Str & "Дата последнего доступа - " & Folder.DateLastAccessed & vbCrLf
Str = Str & "Дата последней модификации - " & Folder.DateLastModified & vbCrLf
Str = Str & "Диск - " & Folder.Drive.DriveLetter & vbCrLf
Str = Str & "Это корневой каталог - " & Folder.IsRootFolder & vbCrLf
Str = Str & "Имя - " & Folder.Name & vbCrLf
Str = Str & "Родительский каталог - " & Folder.ParentFolder.Path & vbCrLf
Str = Str & "Путь - " & Folder.Path & vbCrLf
Str = Str & "Короткое имя - " & Folder.ShortName & vbCrLf
Str = Str & "Путь в формате 8.3 - " & Folder.ShortPath & vbCrLf
Str = Str & "Размер - " & Folder.Size & vbCrLf
Str = Str & "Тип каталога - " & Folder.Type & vbCrLf
MsgBox Str

6.2.3. DateLastAccessed

Синтаксис:

DateLastAccessed

Возвращаемое значение: дата последнего доступа к каталогу.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:Program Files")
Str = vbNullString
Str = Str & "Дата создания - " & Folder.DateCreated & vbCrLf
Str = Str & "Дата последнего доступа - " & Folder.DateLastAccessed & vbCrLf
Str = Str & "Дата последней модификации - " & Folder.DateLastModified & vbCrLf
Str = Str & "Диск - " & Folder.Drive.DriveLetter & vbCrLf
Str = Str & "Это корневой каталог - " & Folder.IsRootFolder & vbCrLf
Str = Str & "Имя - " & Folder.Name & vbCrLf
Str = Str & "Родительский каталог - " & Folder.ParentFolder.Path & vbCrLf
Str = Str & "Путь - " & Folder.Path & vbCrLf
Str = Str & "Короткое имя - " & Folder.ShortName & vbCrLf
Str = Str & "Путь в формате 8.3 - " & Folder.ShortPath & vbCrLf
Str = Str & "Размер - " & Folder.Size & vbCrLf
Str = Str & "Тип каталога - " & Folder.Type & vbCrLf
MsgBox Str

6.2.4. DateLastModified

Синтаксис:

DateLastModified

Возвращаемое значение: дата последней модификации каталога.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:Program Files")
Str = vbNullString
Str = Str & "Дата создания - " & Folder.DateCreated & vbCrLf
Str = Str & "Дата последнего доступа - " & Folder.DateLastAccessed & vbCrLf
Str = Str & "Дата последней модификации - " & Folder.DateLastModified & vbCrLf
Str = Str & "Диск - " & Folder.Drive.DriveLetter & vbCrLf
Str = Str & "Это корневой каталог - " & Folder.IsRootFolder & vbCrLf
Str = Str & "Имя - " & Folder.Name & vbCrLf
Str = Str & "Родительский каталог - " & Folder.ParentFolder.Path & vbCrLf
Str = Str & "Путь - " & Folder.Path & vbCrLf
Str = Str & "Короткое имя - " & Folder.ShortName & vbCrLf
Str = Str & "Путь в формате 8.3 - " & Folder.ShortPath & vbCrLf
Str = Str & "Размер - " & Folder.Size & vbCrLf
Str = Str & "Тип каталога - " & Folder.Type & vbCrLf
MsgBox Str

6.2.5. Drive

Синтаксис:

Drive

Возвращаемое значение: объект «Drive» диска, на котором находится каталог.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:Program Files")
Str = vbNullString
Str = Str & "Дата создания - " & Folder.DateCreated & vbCrLf
Str = Str & "Дата последнего доступа - " & Folder.DateLastAccessed & vbCrLf
Str = Str & "Дата последней модификации - " & Folder.DateLastModified & vbCrLf
Str = Str & "Диск - " & Folder.Drive.DriveLetter & vbCrLf
Str = Str & "Это корневой каталог - " & Folder.IsRootFolder & vbCrLf
Str = Str & "Имя - " & Folder.Name & vbCrLf
Str = Str & "Родительский каталог - " & Folder.ParentFolder.Path & vbCrLf
Str = Str & "Путь - " & Folder.Path & vbCrLf
Str = Str & "Короткое имя - " & Folder.ShortName & vbCrLf
Str = Str & "Путь в формате 8.3 - " & Folder.ShortPath & vbCrLf
Str = Str & "Размер - " & Folder.Size & vbCrLf
Str = Str & "Тип каталога - " & Folder.Type & vbCrLf
MsgBox Str

6.2.6. IsRootFolder

Синтаксис:

IsRootFolder

Возвращаемое значение: булево (число). Признак того, является ли каталог корневым.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:Program Files")
Str = vbNullString
Str = Str & "Дата создания - " & Folder.DateCreated & vbCrLf
Str = Str & "Дата последнего доступа - " & Folder.DateLastAccessed & vbCrLf
Str = Str & "Дата последней модификации - " & Folder.DateLastModified & vbCrLf
Str = Str & "Диск - " & Folder.Drive.DriveLetter & vbCrLf
Str = Str & "Это корневой каталог - " & Folder.IsRootFolder & vbCrLf
Str = Str & "Имя - " & Folder.Name & vbCrLf
Str = Str & "Родительский каталог - " & Folder.ParentFolder.Path & vbCrLf
Str = Str & "Путь - " & Folder.Path & vbCrLf
Str = Str & "Короткое имя - " & Folder.ShortName & vbCrLf
Str = Str & "Путь в формате 8.3 - " & Folder.ShortPath & vbCrLf
Str = Str & "Размер - " & Folder.Size & vbCrLf
Str = Str & "Тип каталога - " & Folder.Type & vbCrLf
MsgBox Str

6.2.7. Name

Синтаксис:

Name

Возвращаемое значение: имя каталога.

Замечание: чтение и запись.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:Program Files")
Str = vbNullString
Str = Str & "Дата создания - " & Folder.DateCreated & vbCrLf
Str = Str & "Дата последнего доступа - " & Folder.DateLastAccessed & vbCrLf
Str = Str & "Дата последней модификации - " & Folder.DateLastModified & vbCrLf
Str = Str & "Диск - " & Folder.Drive.DriveLetter & vbCrLf
Str = Str & "Это корневой каталог - " & Folder.IsRootFolder & vbCrLf
Str = Str & "Имя - " & Folder.Name & vbCrLf
Str = Str & "Родительский каталог - " & Folder.ParentFolder.Path & vbCrLf
Str = Str & "Путь - " & Folder.Path & vbCrLf
Str = Str & "Короткое имя - " & Folder.ShortName & vbCrLf
Str = Str & "Путь в формате 8.3 - " & Folder.ShortPath & vbCrLf
Str = Str & "Размер - " & Folder.Size & vbCrLf
Str = Str & "Тип каталога - " & Folder.Type & vbCrLf
MsgBox Str

6.2.8. ParentFolder

Синтаксис:

ParentFolder

Возвращаемое значение: объект «Folder» родительского каталога.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:Program Files")
Str = vbNullString
Str = Str & "Дата создания - " & Folder.DateCreated & vbCrLf
Str = Str & "Дата последнего доступа - " & Folder.DateLastAccessed & vbCrLf
Str = Str & "Дата последней модификации - " & Folder.DateLastModified & vbCrLf
Str = Str & "Диск - " & Folder.Drive.DriveLetter & vbCrLf
Str = Str & "Это корневой каталог - " & Folder.IsRootFolder & vbCrLf
Str = Str & "Имя - " & Folder.Name & vbCrLf
Str = Str & "Родительский каталог - " & Folder.ParentFolder.Path & vbCrLf
Str = Str & "Путь - " & Folder.Path & vbCrLf
Str = Str & "Короткое имя - " & Folder.ShortName & vbCrLf
Str = Str & "Путь в формате 8.3 - " & Folder.ShortPath & vbCrLf
Str = Str & "Размер - " & Folder.Size & vbCrLf
Str = Str & "Тип каталога - " & Folder.Type & vbCrLf
MsgBox Str

6.2.9. Path

Синтаксис:

Path

Возвращаемое значение: полный путь к каталогу.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:Program Files")
Str = vbNullString
Str = Str & "Дата создания - " & Folder.DateCreated & vbCrLf
Str = Str & "Дата последнего доступа - " & Folder.DateLastAccessed & vbCrLf
Str = Str & "Дата последней модификации - " & Folder.DateLastModified & vbCrLf
Str = Str & "Диск - " & Folder.Drive.DriveLetter & vbCrLf
Str = Str & "Это корневой каталог - " & Folder.IsRootFolder & vbCrLf
Str = Str & "Имя - " & Folder.Name & vbCrLf
Str = Str & "Родительский каталог - " & Folder.ParentFolder.Path & vbCrLf
Str = Str & "Путь - " & Folder.Path & vbCrLf
Str = Str & "Короткое имя - " & Folder.ShortName & vbCrLf
Str = Str & "Путь в формате 8.3 - " & Folder.ShortPath & vbCrLf
Str = Str & "Размер - " & Folder.Size & vbCrLf
Str = Str & "Тип каталога - " & Folder.Type & vbCrLf
MsgBox Str

6.2.10. ShortName

Синтаксис:

ShortName

Возвращаемое значение: короткое имя каталога в формате 8.3.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:Program Files")
Str = vbNullString
Str = Str & "Дата создания - " & Folder.DateCreated & vbCrLf
Str = Str & "Дата последнего доступа - " & Folder.DateLastAccessed & vbCrLf
Str = Str & "Дата последней модификации - " & Folder.DateLastModified & vbCrLf
Str = Str & "Диск - " & Folder.Drive.DriveLetter & vbCrLf
Str = Str & "Это корневой каталог - " & Folder.IsRootFolder & vbCrLf
Str = Str & "Имя - " & Folder.Name & vbCrLf
Str = Str & "Родительский каталог - " & Folder.ParentFolder.Path & vbCrLf
Str = Str & "Путь - " & Folder.Path & vbCrLf
Str = Str & "Короткое имя - " & Folder.ShortName & vbCrLf
Str = Str & "Путь в формате 8.3 - " & Folder.ShortPath & vbCrLf
Str = Str & "Размер - " & Folder.Size & vbCrLf
Str = Str & "Тип каталога - " & Folder.Type & vbCrLf
MsgBox Str

6.2.11. ShortPath

Синтаксис:

ShortPath

Возвращаемое значение: короткий путь к каталогу в формате 8.3.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:Program Files")
Str = vbNullString
Str = Str & "Дата создания - " & Folder.DateCreated & vbCrLf
Str = Str & "Дата последнего доступа - " & Folder.DateLastAccessed & vbCrLf
Str = Str & "Дата последней модификации - " & Folder.DateLastModified & vbCrLf
Str = Str & "Диск - " & Folder.Drive.DriveLetter & vbCrLf
Str = Str & "Это корневой каталог - " & Folder.IsRootFolder & vbCrLf
Str = Str & "Имя - " & Folder.Name & vbCrLf
Str = Str & "Родительский каталог - " & Folder.ParentFolder.Path & vbCrLf
Str = Str & "Путь - " & Folder.Path & vbCrLf
Str = Str & "Короткое имя - " & Folder.ShortName & vbCrLf
Str = Str & "Путь в формате 8.3 - " & Folder.ShortPath & vbCrLf
Str = Str & "Размер - " & Folder.Size & vbCrLf
Str = Str & "Тип каталога - " & Folder.Type & vbCrLf
MsgBox Str

6.2.12. Size

Синтаксис:

Size

Возвращаемое значение: размер всех файлов и подкаталогов, входящих в данный каталог, в байтах.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:Program Files")
Str = vbNullString
Str = Str & "Дата создания - " & Folder.DateCreated & vbCrLf
Str = Str & "Дата последнего доступа - " & Folder.DateLastAccessed & vbCrLf
Str = Str & "Дата последней модификации - " & Folder.DateLastModified & vbCrLf
Str = Str & "Диск - " & Folder.Drive.DriveLetter & vbCrLf
Str = Str & "Это корневой каталог - " & Folder.IsRootFolder & vbCrLf
Str = Str & "Имя - " & Folder.Name & vbCrLf
Str = Str & "Родительский каталог - " & Folder.ParentFolder.Path & vbCrLf
Str = Str & "Путь - " & Folder.Path & vbCrLf
Str = Str & "Короткое имя - " & Folder.ShortName & vbCrLf
Str = Str & "Путь в формате 8.3 - " & Folder.ShortPath & vbCrLf
Str = Str & "Размер - " & Folder.Size & vbCrLf
Str = Str & "Тип каталога - " & Folder.Type & vbCrLf
MsgBox Str

6.2.13. Type

Синтаксис:

Type

Возвращаемое значение: тип каталога. Информация, похожая на ту, которую можно увидеть в палитре свойств каталога в проводнике.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:Program Files")
Str = vbNullString
Str = Str & "Дата создания - " & Folder.DateCreated & vbCrLf
Str = Str & "Дата последнего доступа - " & Folder.DateLastAccessed & vbCrLf
Str = Str & "Дата последней модификации - " & Folder.DateLastModified & vbCrLf
Str = Str & "Диск - " & Folder.Drive.DriveLetter & vbCrLf
Str = Str & "Это корневой каталог - " & Folder.IsRootFolder & vbCrLf
Str = Str & "Имя - " & Folder.Name & vbCrLf
Str = Str & "Родительский каталог - " & Folder.ParentFolder.Path & vbCrLf
Str = Str & "Путь - " & Folder.Path & vbCrLf
Str = Str & "Короткое имя - " & Folder.ShortName & vbCrLf
Str = Str & "Путь в формате 8.3 - " & Folder.ShortPath & vbCrLf
Str = Str & "Размер - " & Folder.Size & vbCrLf
Str = Str & "Тип каталога - " & Folder.Type & vbCrLf
MsgBox Str

6.2.14. SubFolders

Синтаксис:

SubFolders

Возвращаемое значение: объект-коллекция «Folders», содержащая все подкаталоги данного каталога, включая скрытые и системные.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:")
MsgBox Folder.SubFolders.Count
Set SubFolder = Folder.SubFolders.Item("Program Files")
MsgBox SubFolder.Path
Set SubFolder = Folder.SubFolders("Program Files")
MsgBox SubFolder.Path

Другой пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:Program Files")
For Each SubFolder In Folder.SubFolders
    WScript.Echo SubFolder.Name
Next

Создание нового подкаталога:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:")
Set NewFolder = Folder.SubFolders.Add("New Folder")

6.2.15. Files

Синтаксис:

Files

Возвращаемое значение: объект-коллекция «Files», содержащая все файлы данного каталога, включая скрытые и системные.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:")
MsgBox Folder.Files.Count
Set File = Folder.Files.Item("AUTOEXEC.BAT")
MsgBox File.Path
Set File = Folder.Files("AUTOEXEC.BAT")
MsgBox File.Path

Другой пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:")
For Each File In Folder.Files
    WScript.Echo File.Name
Next

6.3. Методы

6.3.1. Copy

Синтаксис:

Copy(<Destination>,<Overwrite>)

Назначение: копирует каталог в указанное место.

Параметры:

  • <Destination> — строка, путь (куда копировать).
  • <Overwrite> — необязательный, булево (число). Заменять каталог, если он существует (True), или нет (False).

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("D:JobSite")
Folder.Copy "D:"

6.3.2. Move

Синтаксис:

Move(<Destination>)

Назначение: перемещает каталог в указанное место.

Параметры:

  • <Destination> — строка, путь (куда перемещать).

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("D:JobSite")
Folder.Move "D:"

6.3.3. Delete

Синтаксис:

Delete(<Force>)

Назначение: удаляет каталог со всем содержимым.

Параметры:

  • <Force> — необязательный, булево (число). Удалять каталог, если он имеет атрибут «только для чтения» (True), или нет (False).

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:New Folder")
Folder.Delete

6.3.4. CreateTextFile

Синтаксис:

CreateTextFile(<Filename>,<Overwrite>,<Unicode>)

Назначение: создаёт новый текстовый файл и возвращает объект «TextStream», указывающий на него.

Параметры:

  • <Filename> — строка, имя файла.
  • <Overwrite> — необязательный, булево (число). Перезаписывать файл, если он существует (True), или нет (False). По умолчанию — False. Если указано False и файл существует — произойдёт ошибка.
  • <Unicode> — необязательный, булево (число). Файл в формате Unicode (True), или ASCII (False). По умолчанию — False.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:")
Set TextStream = Folder.CreateTextFile("Test.txt")

7. Объект TextStream

7.1. Создание объекта

Пример №1:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set TextStream = FSO.CreateTextFile("C:Test.txt")

Пример №2:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:")
Set TextStream = Folder.CreateTextFile("Test.txt")

Пример №3:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set TextStream = FSO.OpenTextFile("C:autoexec.bat")

Пример №4:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:autoexec.bat")
Set TextStream = File.OpenAsTextStream(1)

7.2. Свойства

7.2.1. AtEndOfLine

Синтаксис:

AtEndOfLine

Возвращаемое значение: содержит True, если указатель достиг конца строки и False в противном случае. Работает только если файл открыт для чтения.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:boot.ini")
Set TextStream = File.OpenAsTextStream(1)
Str = vbNullString
While Not TextStream.AtEndOfLine
    Str = Str & TextStream.Read(1)
Wend
TextStream.Close
MsgBox Str

7.2.2. AtEndOfStream

Синтаксис:

AtEndOfStream

Возвращаемое значение: содержит True, если указатель достиг конца файла и False в противном случае. Работает только если файл открыт для чтения.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:boot.ini")
Set TextStream = File.OpenAsTextStream(1)
Str = vbNullString
While Not TextStream.AtEndOfStream
    Str = Str & TextStream.ReadLine() & vbCrLf
Wend
TextStream.Close
MsgBox Str

7.2.3. Column

Синтаксис:

Column

Возвращаемое значение: содержит номер колонки текущего символа файла.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:boot.ini")
Set TextStream = File.OpenAsTextStream(1)
Str = vbNullString
While Not TextStream.AtEndOfLine
    Str = Str & TextStream.Column & ": " & TextStream.Read(1) & vbCrLf
Wend
TextStream.Close
MsgBox Str

7.2.4. Line

Синтаксис:

Line

Возвращаемое значение: содержит номер текущей строки файла.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:boot.ini")
Set TextStream = File.OpenAsTextStream(1)
Str = vbNullString
While Not TextStream.AtEndOfStream
    Str = Str & TextStream.Line & ": " & TextStream.ReadLine() & vbCrLf
Wend
TextStream.Close
MsgBox Str

7.3. Методы

7.3.1. Close

Синтаксис:

Close

Назначение: закрывает открытый файл.

Параметры: нет.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:boot.ini")
Set TextStream = File.OpenAsTextStream(1)
MsgBox TextStream.ReadAll()
TextStream.Close

7.3.2. Read

Синтаксис:

Read(<Characters>)

Назначение: считывает из файла указанное количество символов и возвращает полученную строку.

Параметры:

  • <Characters> — число, количество символов, которое нужно считать.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:boot.ini")
Set TextStream = File.OpenAsTextStream(1)
MsgBox TextStream.Read(13)
TextStream.Close

7.3.3. ReadAll

Синтаксис:

ReadAll

Назначение: считывает весь файл и возвращает полученную строку.

Параметры: нет.

Описание: для больших файлов использование этого метода потребует больших ресурсов памяти.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:boot.ini")
Set TextStream = File.OpenAsTextStream(1)
MsgBox TextStream.ReadAll()
TextStream.Close

7.3.4. ReadLine

Синтаксис:

ReadLine

Назначение: считывает строку из файла и возвращает полученную строку.

Параметры: нет.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:boot.ini")
Set TextStream = File.OpenAsTextStream(1)
Str = vbNullString
While Not TextStream.AtEndOfStream
    Str = Str & TextStream.ReadLine() & vbCrLf
Wend
MsgBox Str
TextStream.Close

7.3.5. Skip

Синтаксис:

Skip(<Characters>)

Назначение: пропускает при чтении файла указанное количество символов.

Параметры:

  • <Characters> — число, количество символов, которые нужно пропустить.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:boot.ini")
Set TextStream = File.OpenAsTextStream(1)
MsgBox TextStream.Read(13)
TextStream.Skip 10
MsgBox TextStream.Read(10)
TextStream.Close

7.3.6. SkipLine

Синтаксис:

SkipLine

Назначение: пропускает при чтении файла строку.

Параметры: нет.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:boot.ini")
Set TextStream = File.OpenAsTextStream(1)
MsgBox TextStream.ReadLine()
TextStream.SkipLine
MsgBox TextStream.ReadLine()
TextStream.Close

7.3.7. Write

Синтаксис:

Write(<String>)

Назначение: записывает в файл указанную строку. Символы возврата каретки и новой строки в файл не записываются.

Параметры:

  • <String> — строка для записи в файл.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set TextStream = FSO.CreateTextFile("C:Test.txt")
TextStream.Write("Text")
TextStream.Close

7.3.8. WriteLine

Синтаксис:

WriteLine(<String>)

Назначение: записывает в файл указанную строку. В файл записываются символы возврата каретки и новой строки.

Параметры:

  • <String> — необязательный, строка для записи в файл. Если опущен, в файл записывается пустая строка.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set TextStream = FSO.CreateTextFile("C:Test.txt")
TextStream.WriteLine "Text"
TextStream.Close

7.3.9. WriteBlankLines

Синтаксис:

WriteBlankLines(<Lines>)

Назначение: записывает в файл указанное количество пустых строк (символы возврата каретки и новой строки).

Параметры:

  • <Lines> — число, количество пустых строк, которое надо записать.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set TextStream = FSO.CreateTextFile("C:Test.txt")
TextStream.WriteBlankLines 5
TextStream.Close

Понравилась статья? Поделить с друзьями:
  • Vba excel оператор if not
  • Vba excel открыть гиперссылку
  • Vba excel открыть все книги в папке
  • Vba excel открыть word документ
  • Vba excel открыть chrome