Comment utiliser FileSystemObject dans VBA?

112

Dois-je faire référence à quelque chose? Comment utiliser ceci:

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

J'obtiens une erreur car il ne reconnaît pas ces objets.

l --''''''--------- '' '' '' '' '' '
la source

Réponses:

178

Dans Excel, vous devez définir une référence à la bibliothèque d'exécution du script VB. Le fichier concerné se trouve généralement à l'adresse\Windows\System32\scrrun.dll

  • Pour référencer ce fichier, chargez Visual Basic Editor ( ALT+ F11)
  • Sélectionnez Outils> Références dans le menu déroulant
  • Une liste des références disponibles s'affiche
  • Cochez la case à côté de ' Microsoft Scripting Runtime'
  • Le nom complet et le chemin du scrrun.dllfichier seront affichés sous la zone de liste
  • Cliquez sur le OKbouton.

Cela peut également être fait directement dans le code si l'accès au modèle d'objet VBA a été activé.

L'accès peut être activé en cochant la case Trust access to the VBA project object modelsituée dans Fichier> Options> Centre de gestion de la confidentialité> Paramètres du centre de confiance> Paramètres des macros

Paramètres de macro VBA

Pour ajouter une référence:

Sub Add_Reference()

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

End Sub

Pour supprimer une référence:

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
la source
Que faites-vous sur un Mac?
Thomas Fankhauser
N'y at-il pas un moyen de le faire via la ligne de commande, comme en incluant une bibliothèque ou quelque chose?
LuizAngioletti
Existe-t-il un moyen de cocher AUTO la case à cocher «Microsoft Scripting Runtime»? pour TOUS les fichiers Excel? J'utilise Excel 2016
compski
Jetez un œil à la réponse acceptée à cette question. stackoverflow.com/questions/9879825/…
Robert Mearns
13

Dans Excel 2013, la chaîne de création d'objet est:

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

au lieu du code dans la réponse ci-dessus:

Dim fs,fname
Set fs=Server.CreateObject("Scripting.FileSystemObject")
Stefano Spinucci
la source
pour être un peu plus explicite, je le vois normalement commeDim fso As Object
Marcucciboy2
11

Ces types ont d'excellents exemples d'utilisation de l'objet système de fichiers 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
%> 
Gérald Ferreira
la source
4
Cet extrait de code montre l'utilisation du FSO dans ASP / IIS pas exceller
Spangen
2

Après avoir ajouté la référence, j'ai dû utiliser

Dim fso As New Scripting.FileSystemObject
thedanotto
la source
2

Après avoir importé le runtime de script comme décrit ci-dessus, vous devez faire quelques légères modifications pour le faire fonctionner dans Excel 2010 (ma version). Dans le code suivant, j'ai également ajouté le code utilisé à l'utilisateur pour choisir un fichier.

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

J'espère que cela vous aidera!

Meilleures salutations

Fabio

RENARD DE FEU
la source