Come si usa FileSystemObject in VBA?


Risposte:


178

In Excel è necessario impostare un riferimento alla libreria run-time di script VB. Il file pertinente si trova solitamente in\Windows\System32\scrrun.dll

  • Per fare riferimento a questo file, carica il Visual Basic Editor ( ALT+ F11)
  • Seleziona Strumenti> Riferimenti dal menu a discesa
  • Verrà visualizzata una casella di riepilogo dei riferimenti disponibili
  • Seleziona la casella di controllo accanto a ' Microsoft Scripting Runtime'
  • Il nome completo e il percorso del scrrun.dllfile verranno visualizzati sotto la casella di riepilogo
  • Fare clic sul OKpulsante.

Questa operazione può essere eseguita anche direttamente nel codice se è stato abilitato l'accesso al modello a oggetti VBA.

L'accesso può essere abilitato spuntando la casella di controllo che si Trust access to the VBA project object modeltrova in File> Opzioni> Centro protezione> Impostazioni Centro protezione> Impostazioni macro

Impostazioni macro VBA

Per aggiungere un riferimento:

Sub Add_Reference()

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

End Sub

Per rimuovere un riferimento:

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

Cosa fai su un Mac?
Thomas Fankhauser

Non c'è un modo per farlo tramite riga di comando, come includere una libreria o qualcosa del genere?
LuizAngioletti

C'è un modo per spuntare AUTO la casella di controllo "Microsoft Scripting Runtime"? per TUTTI i file Excel? Sto usando Excel 2016
compski

Dai un'occhiata alla risposta accettata a questa domanda. stackoverflow.com/questions/9879825/…
Robert Mearns

13

In Excel 2013 la stringa di creazione dell'oggetto è:

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

invece del codice nella risposta sopra:

Dim fs,fname
Set fs=Server.CreateObject("Scripting.FileSystemObject")

per essere leggermente più esplicito, normalmente lo vedo comeDim fso As Object
Marcucciboy2

11

Questi ragazzi hanno ottimi esempi di come utilizzare l'oggetto filesystem 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
Questo frammento di codice dimostra l'uso dell'UST in ASP / IIS non Excel
Spangen

2

Dopo aver aggiunto il riferimento, ho dovuto usare

Dim fso As New Scripting.FileSystemObject

2

Dopo aver importato il runtime di scripting come descritto sopra, è necessario apportare alcune lievi modifiche per farlo funzionare in Excel 2010 (la mia versione). Nel codice seguente ho aggiunto anche il codice utilizzato dall'utente per scegliere un file.

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

Spero che aiuti!

I migliori saluti

Fabio

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.