Wie verwende ich FileSystemObject in VBA?

112

Gibt es etwas, auf das ich verweisen muss? Wie benutze ich das:

Dim fso As New FileSystemObject
Dim fld As Folder
Dim ts As TextStream

Ich erhalte eine Fehlermeldung, weil diese Objekte nicht erkannt werden.

l - '' '' '' - '' '' '' '' '' '' ''
quelle

Antworten:

178

In Excel müssen Sie einen Verweis auf die Laufzeitbibliothek des VB-Skripts festlegen. Die entsprechende Datei befindet sich normalerweise unter\Windows\System32\scrrun.dll

  • Laden Sie den Visual Basic-Editor ( ALT+ F11) , um auf diese Datei zu verweisen.
  • Wählen Sie im Dropdown-Menü Extras> Referenzen
  • Eine Liste der verfügbaren Referenzen wird angezeigt
  • Aktivieren Sie das Kontrollkästchen neben ' Microsoft Scripting Runtime'
  • Der vollständige Name und Pfad der scrrun.dllDatei wird unter dem Listenfeld angezeigt
  • Klicken Sie auf die OKSchaltfläche.

Dies kann auch direkt im Code erfolgen, wenn der Zugriff auf das VBA-Objektmodell aktiviert wurde.

Der Zugriff kann durch Aktivieren des Kontrollkästchens Trust access to the VBA project object modelunter Datei> Optionen> Vertrauensstellungscenter> Vertrauensstellungscenter-Einstellungen> Makroeinstellungen aktiviert werden

VBA-Makroeinstellungen

So fügen Sie eine Referenz hinzu:

Sub Add_Reference()

    Application.VBE.ActiveVBProject.References.AddFromFile "C:\Windows\System32\scrrun.dll"
'Add a reference

End Sub

So entfernen Sie eine Referenz:

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
Robert Mearns
quelle
Was machst du auf einem Mac?
Thomas Fankhauser
Gibt es keine Möglichkeit, dies über die Befehlszeile zu tun, z. B. eine Bibliothek oder etwas anderes einzuschließen?
LuizAngioletti
Gibt es eine Möglichkeit, AUTO das Kontrollkästchen "Microsoft Scripting Runtime" zu aktivieren? für ALLE Excel-Dateien? Ich benutze Excel 2016
compski
Schauen Sie sich die akzeptierte Antwort auf diese Frage an. stackoverflow.com/questions/9879825/…
Robert Mearns
13

In Excel 2013 lautet die Objekterstellungszeichenfolge:

Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")

anstelle des Codes in der obigen Antwort:

Dim fs,fname
Set fs=Server.CreateObject("Scripting.FileSystemObject")
Stefano Spinucci
quelle
um etwas expliziter zu sein, sehe ich es normalerweise alsDim fso As Object
Marcucciboy2
12

Diese Leute haben hervorragende Beispiele für die Verwendung des Dateisystemobjekts 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
%> 
Gerald Ferreira
quelle
3
Dieses Code-Snippet demonstriert die Verwendung des FSO in ASP / IIS nicht exzellent
Spangen
2

Nachdem ich die Referenz hinzugefügt hatte, musste ich verwenden

Dim fso As New Scripting.FileSystemObject
thedanotto
quelle
2

Nachdem Sie die Skriptlaufzeit wie oben beschrieben importiert haben, müssen Sie einige geringfügige Änderungen vornehmen, damit sie in Excel 2010 (meiner Version) funktioniert. In den folgenden Code habe ich auch den Code eingefügt, der dem Benutzer zum Auswählen einer Datei verwendet wird.

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

Hoffe es hilft!

Freundliche Grüße

Fabio

FEUERFUCHS
quelle