Чи є щось, на що мені потрібно звернутися? Як це використовувати:
Dim fso As New FileSystemObject
Dim fld As Folder
Dim ts As TextStream
Я отримую помилку, оскільки він не розпізнає ці об'єкти.
Чи є щось, на що мені потрібно звернутися? Як це використовувати:
Dim fso As New FileSystemObject
Dim fld As Folder
Dim ts As TextStream
Я отримую помилку, оскільки він не розпізнає ці об'єкти.
Відповіді:
У програмі Excel потрібно встановити посилання на бібліотеку виконання сценарію VB. Зазвичай відповідний файл знаходиться за адресою\Windows\System32\scrrun.dll
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")
Dim fso As Object
У цих хлопців є прекрасні приклади використання об’єкта файлової системи 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
Сподіваюся, це допоможе!
З найкращими побажаннями
Фабіо