Czy jest coś, do czego muszę się odwołać? Jak tego używać:
Dim fso As New FileSystemObject
Dim fld As Folder
Dim ts As TextStream
Otrzymuję błąd, ponieważ nie rozpoznaje on tych obiektów.
Czy jest coś, do czego muszę się odwołać? Jak tego używać:
Dim fso As New FileSystemObject
Dim fld As Folder
Dim ts As TextStream
Otrzymuję błąd, ponieważ nie rozpoznaje on tych obiektów.
Odpowiedzi:
W programie Excel musisz ustawić odwołanie do biblioteki wykonawczej skryptów VB. Odpowiedni plik zwykle znajduje się pod adresem\Windows\System32\scrrun.dll
Microsoft Scripting Runtime
”scrrun.dll
pliku zostaną wyświetlone poniżej pola listyMożna to również zrobić bezpośrednio w kodzie, jeśli został włączony dostęp do modelu obiektowego VBA.
Dostęp można włączyć, zaznaczając pole wyboru Trust access to the VBA project object model
znajdujące się w Plik> Opcje> Centrum zaufania> Ustawienia Centrum zaufania> Ustawienia makr
Aby dodać odniesienie:
Sub Add_Reference()
Application.VBE.ActiveVBProject.References.AddFromFile "C:\Windows\System32\scrrun.dll"
'Add a reference
End Sub
Aby usunąć odniesienie:
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
W programie Excel 2013 ciąg tworzenia obiektu to:
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
zamiast kodu w odpowiedzi powyżej:
Dim fs,fname
Set fs=Server.CreateObject("Scripting.FileSystemObject")
Dim fso As Object
Ci goście mają doskonałe przykłady korzystania z obiektu systemu plików 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
%>
Po dodaniu referencji musiałem użyć
Dim fso As New Scripting.FileSystemObject
Po zaimportowaniu środowiska wykonawczego skryptów, jak opisano powyżej, musisz dokonać niewielkiej modyfikacji, aby działało w programie Excel 2010 (moja wersja). W poniższym kodzie dodałem również kod używany przez użytkownika do wybrania pliku.
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
Mam nadzieję, że to pomoże!
Z poważaniem
Fabio