Как использовать FileSystemObject в VBA?
Есть ли что-то, на что я должен ссылаться? Как я могу использовать это:
Dim fso As New FileSystemObject
Dim fld As Folder
Dim ts As TextStream
Я получаю сообщение об ошибке, потому что он не распознает эти объекты.
5 ответов
В Excel вам нужно установить ссылку на библиотеку времени выполнения скрипта VB. Соответствующий файл обычно находится по адресу \Windows\System32\scrrun.dll
- Для ссылки на этот файл загрузите редактор Visual Basic (ALT+F11)
- Выберите Инструменты> Ссылки из выпадающего меню
- Будет отображен список доступных ссылок
- Установите флажок рядом с "
Microsoft Scripting Runtime
' - Полное имя и путь
scrrun.dll
файл будет отображаться под списком - Нажмите на кнопку ОК.
Это также можно сделать непосредственно в коде, если доступ к объектной модели VBA разрешен.
Доступ можно включить, поставив галочку Trust access to the VBA project object model
находится в меню Файл> Параметры> Центр управления безопасностью> Настройки центра управления безопасностью> Настройки макроса
Чтобы добавить ссылку:
Sub Add_Reference()
Application.VBE.ActiveVBProject.References.AddFromFile "C:\Windows\System32\scrrun.dll"
'Add a reference
End Sub
Чтобы удалить ссылку:
Sub Remove_Reference()
Dim oReference As Object
Set oReference = Application.VBE.ActiveVBProject.References.Item("Scripting")
Application.VBE.ActiveVBProject.References.Remove oReference
'Remove a reference
End Sub
В Excel 2013 строка создания объекта:
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
вместо кода в ответе выше:
Dim fs,fname
Set fs=Server.CreateObject("Scripting.FileSystemObject")
У этих ребят есть отличные примеры использования объекта файловой системы http://www.w3schools.com/asp/asp_ref_filesystem.asp
<%
dim fs,fname
set fs=Server.CreateObject("Scripting.FileSystemObject")
set fname=fs.CreateTextFile("c:\test.txt",true)
fname.WriteLine("Hello World!")
fname.Close
set fname=nothing
set fs=nothing
%>
После добавления ссылки мне пришлось использовать
Dim fso As New Scripting.FileSystemObject
После импорта среды выполнения сценариев, как описано выше, вам нужно внести небольшие изменения, чтобы она работала в Excel 2010 (моя версия). В следующем коде я также добавил код, используемый для выбора файла пользователем.
Dim intChoice As Integer
Dim strPath As String
' Select one file
Application.FileDialog(msoFileDialogOpen).AllowMultiSelect = False
' Show the selection window
intChoice = Application.FileDialog(msoFileDialogOpen).Show
' Get back the user option
If intChoice <> 0 Then
strPath = Application.FileDialog(msoFileDialogOpen).SelectedItems(1)
Else
Exit Sub
End If
Dim FSO As New Scripting.FileSystemObject
Dim fsoStream As Scripting.TextStream
Dim strLine As String
Set fsoStream = FSO.OpenTextFile(strPath)
Do Until fsoStream.AtEndOfStream = True
strLine = fsoStream.ReadLine
' ... do your work ...
Loop
fsoStream.Close
Set FSO = Nothing
Надеюсь, это поможет!
С наилучшими пожеланиями
Fabio