Jak używać FileSystemObject w VBA?


Odpowiedzi:


178

W programie Excel musisz ustawić odwołanie do biblioteki wykonawczej skryptów VB. Odpowiedni plik zwykle znajduje się pod adresem\Windows\System32\scrrun.dll

  • Aby odwołać się do tego pliku, załaduj Edytor Visual Basic ( ALT+ F11)
  • Z menu rozwijanego wybierz opcję Narzędzia> Referencje
  • Zostanie wyświetlona lista dostępnych odniesień
  • Zaznacz pole wyboru obok „ Microsoft Scripting Runtime
  • Pełna nazwa i ścieżka do scrrun.dllpliku zostaną wyświetlone poniżej pola listy
  • Kliknij OKprzycisk.

Moż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 modelznajdujące się w Plik> Opcje> Centrum zaufania> Ustawienia Centrum zaufania> Ustawienia makr

Ustawienia makr VBA

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

Co robisz na Macu?
Thomas Fankhauser

Czy nie ma sposobu, aby to zrobić za pomocą wiersza poleceń, na przykład dołączając bibliotekę lub coś takiego?
LuizAngioletti

Czy istnieje sposób, aby automatycznie zaznaczyć pole wyboru „Microsoft Scripting Runtime”? WSZYSTKICH plików Excela? Używam programu Excel 2016
compski

Spójrz na zaakceptowaną odpowiedź na to pytanie. stackoverflow.com/questions/9879825/…
Robert Mearns

13

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")

by być nieco bardziej dosłownym, zwykle widzę to jakoDim fso As Object
Marcucciboy2

11

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
%> 

4
Ten fragment kodu demonstruje użycie FSO w ASP / IIS, a nie w programie Excel
Spangen,

2

Po dodaniu referencji musiałem użyć

Dim fso As New Scripting.FileSystemObject

2

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.