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.