¿Hay algo a lo que deba hacer referencia? ¿Cómo uso esto?
Dim fso As New FileSystemObject
Dim fld As Folder
Dim ts As TextStream
Recibo un error porque no reconoce estos objetos.
¿Hay algo a lo que deba hacer referencia? ¿Cómo uso esto?
Dim fso As New FileSystemObject
Dim fld As Folder
Dim ts As TextStream
Recibo un error porque no reconoce estos objetos.
Respuestas:
Dentro de Excel, debe establecer una referencia a la biblioteca de tiempo de ejecución del script VB. El archivo relevante generalmente se encuentra en\Windows\System32\scrrun.dll
Microsoft Scripting Runtime
'scrrun.dll
archivo se mostrarán debajo del cuadro de lista.Esto también se puede hacer directamente en el código si se ha habilitado el acceso al modelo de objetos de VBA.
El acceso se puede habilitar marcando la casilla de verificación que se Trust access to the VBA project object model
encuentra en Archivo> Opciones> Centro de confianza> Configuración del Centro de confianza> Configuración de macros
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
En Excel 2013, la cadena de creación de objetos es:
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
en lugar del código en la respuesta anterior:
Dim fs,fname
Set fs=Server.CreateObject("Scripting.FileSystemObject")
Dim fso As Object
Estos chicos tienen excelentes ejemplos de cómo usar el objeto del sistema de archivos 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
%>
Después de agregar la referencia, tuve que usar
Dim fso As New Scripting.FileSystemObject
Después de importar el tiempo de ejecución de secuencias de comandos como se describe anteriormente, debe realizar una pequeña modificación para que funcione en Excel 2010 (mi versión). En el siguiente código también agregué el código utilizado por el usuario para elegir 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 te ayude!
Atentamente
Fabio