C'è qualcosa a cui devo fare riferimento? Come lo uso:
Dim fso As New FileSystemObject
Dim fld As Folder
Dim ts As TextStream
Ricevo un errore perché non riconosce questi oggetti.
C'è qualcosa a cui devo fare riferimento? Come lo uso:
Dim fso As New FileSystemObject
Dim fld As Folder
Dim ts As TextStream
Ricevo un errore perché non riconosce questi oggetti.
Risposte:
In Excel è necessario impostare un riferimento alla libreria run-time di script VB. Il file pertinente si trova solitamente in\Windows\System32\scrrun.dll
Microsoft Scripting Runtime
'scrrun.dll
file verranno visualizzati sotto la casella di riepilogoQuesta operazione può essere eseguita anche direttamente nel codice se è stato abilitato l'accesso al modello a oggetti VBA.
L'accesso può essere abilitato spuntando la casella di controllo che si Trust access to the VBA project object model
trova in File> Opzioni> Centro protezione> Impostazioni Centro protezione> Impostazioni macro
Per aggiungere un riferimento:
Sub Add_Reference()
Application.VBE.ActiveVBProject.References.AddFromFile "C:\Windows\System32\scrrun.dll"
'Add a reference
End Sub
Per rimuovere un riferimento:
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
In Excel 2013 la stringa di creazione dell'oggetto è:
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
invece del codice nella risposta sopra:
Dim fs,fname
Set fs=Server.CreateObject("Scripting.FileSystemObject")
Dim fso As Object
Questi ragazzi hanno ottimi esempi di come utilizzare l'oggetto filesystem 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
%>
Dopo aver aggiunto il riferimento, ho dovuto usare
Dim fso As New Scripting.FileSystemObject
Dopo aver importato il runtime di scripting come descritto sopra, è necessario apportare alcune lievi modifiche per farlo funzionare in Excel 2010 (la mia versione). Nel codice seguente ho aggiunto anche il codice utilizzato dall'utente per scegliere un file.
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
Spero che aiuti!
I migliori saluti
Fabio