Existe algo que eu preciso fazer referência? Como faço para usar isso:
Dim fso As New FileSystemObject
Dim fld As Folder
Dim ts As TextStream
Estou recebendo um erro porque ele não reconhece esses objetos.
Existe algo que eu preciso fazer referência? Como faço para usar isso:
Dim fso As New FileSystemObject
Dim fld As Folder
Dim ts As TextStream
Estou recebendo um erro porque ele não reconhece esses objetos.
Respostas:
No Excel, você precisa definir uma referência para a biblioteca de tempo de execução de script VB. O arquivo relevante geralmente está localizado em\Windows\System32\scrrun.dll
Microsoft Scripting Runtime
'scrrun.dll
arquivo serão exibidos abaixo da caixa de listagemIsso também pode ser feito diretamente no código se o acesso ao modelo de objeto VBA tiver sido habilitado.
O acesso pode ser habilitado marcando a caixa de seleção Trust access to the VBA project object model
encontrada em Arquivo> Opções> Central de confiabilidade> Configurações da central de confiança> Configurações de macro
Para adicionar uma referência:
Sub Add_Reference()
Application.VBE.ActiveVBProject.References.AddFromFile "C:\Windows\System32\scrrun.dll"
'Add a reference
End Sub
Para remover uma referência:
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
No excel 2013, a string de criação de objeto é:
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
em vez do código na resposta acima:
Dim fs,fname
Set fs=Server.CreateObject("Scripting.FileSystemObject")
Dim fso As Object
Esses caras têm excelentes exemplos de como usar o objeto de sistema de arquivos 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
%>
Depois de adicionar a referência, tive que usar
Dim fso As New Scripting.FileSystemObject
Depois de importar o tempo de execução de script conforme descrito acima, você precisa fazer algumas pequenas modificações para fazê-lo funcionar no Excel 2010 (minha versão). No código a seguir, também adicionei o código usado para o usuário escolher um arquivo.
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 ajude!
Cumprimentos
Fabio