Wie verwende ich FileSystemObject in VBA?


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

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

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

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

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.