123 votes

Comment utiliser FileSystemObject en VBA ?

Y a-t-il quelque chose que je doive mentionner ? Comment puis-je 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.

191voto

Robert Mearns Points 5127

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

  • Pour faire référence à ce fichier, chargez le fichier éditeur Visual Basic ( ALT + F11 )
  • Sélectionnez Outils > Références dans le menu déroulant
  • Une liste de références disponibles s'affiche
  • Cochez la case à côté de Microsoft Scripting Runtime '
  • Le nom complet et le chemin d'accès du scrrun.dll sera affiché sous la boîte de liste
  • Cliquez sur le OK bouton.

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 model trouvé à Fichier > Options > Centre de confiance > Paramètres du centre de confiance > Paramètres des macros

VBA Macro settings

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

16voto

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

12voto

Gerald Ferreira Points 749

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

1voto

thedanotto Points 1852

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

Dim fso As New Scripting.FileSystemObject

1voto

FIRE FOX Points 19

Après avoir importé le runtime scripting 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é par 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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X