¿Cómo puedo usar FileSystemObject en VBA?

Hay algo que necesito de referencia? ¿Cómo puedo usar esto:

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

Estoy recibiendo un error porque no reconoce estos objetos.

5 Kommentare

  1. 171

    Dentro de Excel que usted necesita para establecer una referencia a la VB script biblioteca de tiempo de ejecución.
    El archivo se encuentra normalmente en \Windows\System32\scrrun.dll

    • Para hacer referencia a este archivo, carga de la
      Editor de Visual Basic (ALT+F11)
    • Seleccione Herramientas > Referencias en el menú desplegable
    • Una lista de referencias disponibles se mostrará
    • Marque la casilla junto a»Microsoft Scripting Runtime
    • El nombre y la ruta completa de la scrrun.dll archivo se muestra a continuación el cuadro de lista
    • Haga clic en el ACEPTAR botón.

    Esto también se puede hacer directamente en el código si el acceso al modelo de objetos de VBA ha sido activada.

    Acceso puede activar marcando la casilla Trust access to the VBA project object model encontrar en Archivo > Opciones > Centro de Confianza > Configuración del Centro de Confianza > Configuración de Macros

    ¿Cómo puedo usar FileSystemObject en VBA?

    Para agregar una referencia:

    Sub Add_Reference()
    
        Application.VBE.ActiveVBProject.References.AddFromFile "C:\Windows\System32\scrrun.dll"
    'Add a reference
    
    End Sub

    Para eliminar una referencia:

    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
    • ¿Qué hacer en un Mac?
    • No hay una manera de hacerlo a través de la línea de comandos, como en la inclusión de una biblioteca o algo?
    • Es allí una manera de AUTO marque la casilla de verificación de «Microsoft Scripting Runtime’? para TODOS los archivos de Excel? Estoy usando Excel 2016
    • Eche un vistazo a la aceptada respuesta a esta pregunta. stackoverflow.com/questions/9879825/…
  2. 12

    Estos chicos tienen excelentes ejemplos de cómo utilizar el sistema de archivos objeto 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
    %> 
    • Este fragmento de código se muestra el uso de la FSO en IIS/ASP no de excel
  3. 12

    En excel 2013 la creación del objeto string es:

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

    lugar del código en la respuesta anterior:

    Dim fs,fname
    Set fs=Server.CreateObject("Scripting.FileSystemObject")
    • para ser un poco más explícito, que normalmente se ven como Dim fso As Object
  4. 2

    Después de importar el tiempo de ejecución de secuencias de comandos, como se describe más arriba tienes que hacer algún paso modificación para que funcione en Excel 2010 (mi versión). En el siguiente código también he de añadir el código que se utiliza para que el usuario elija un archivo.

    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

    Espero que sea de ayuda!

    Saludos

    Fabio

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea