Grazie per la disponibilità
Saluti
Simone
No
Mi blocco su due punti:
Come posso rinominare l'estensione dei file csv, magari in txt?
**********************************************
Non mi sembra necessario
Per aprirli tutti posso usare un ciclo for each, in che modo?
*********************************************
Public Sub m()
Dim objFSO As Object
Dim objFolder As Object
Dim objFile As Object
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder("C:\NomeTuaCartella")
For Each objFile In objFolder.Files
'Il tuo codice per aprire e leggere il file
Next
Set objFolder = Nothing
Set objFSO = Nothing
End Sub
--
---------------------------
Mauro Gamberini
http://www.riolab.org/
Grazie per le dritte. Mi resta un ultimo problema: come posso fare per
chiudere i file aperti dal ciclo?
Non riesco ad assegnare una variabile ad ogni file, per poi utilizzare
close per chiuderli.
Scusate se il problema sembra banale... ma sono agli inizi con VBA.
Grazie mille
Prova:
>> For Each objFile In objFolder.Files
>> 'Il tuo codice per aprire e leggere il file
objFile.Close
>> Next
Avevo già provato, ma con objfile sembra leggere il percorso e non il
file...
Sarebbe interessante vedere il codice che utilizzi per aprire e
leggere il file...
Comunque, una cosa tipo:
Public Sub m()
Dim objFSO As Object
Dim objFolder As Object
Dim objFile As Object
Dim objExcel As Object
Dim objWorkbook As Object
Dim objWorksheet As Object
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder("C:\NomeTuaCartella")
For Each objFile In objFolder.Files
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open(objFile.Path)
Set objWorksheet = objWorkbook.Worksheets("Foglio1")
'il resto del tuo codice
objWorkbook.Saved = True
objWorkbook.Close
objExcel.Quit
Set objWorksheet = Nothing
Set objWorkbook = Nothing
Set objExcel = Nothing
Next
Set objFolder = Nothing
Set objFSO = Nothing
End Sub
--
Ti ringrazio nuovamente per il suggerimento, ho utilizzato il tuo
codice per aprire i file e ho provato ad arrangiarmi con le mie
conoscenze per chiuderli e salvare il report. La procedura non è molto
elegante, non sapendo come chiudere i file del ciclo for each, salvo
il file con il report xxx, chiudo tutti i i file e riapro il file
report!
Riporto il codice
Grazie ancora per la disponibilità
Private Sub Carica_risultati()
Dim objFSO As Object
Dim objFolder As Object
Dim objFile As Object
Application.ScreenUpdating = False
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder("C:\..............")
x = 2
For Each objFile In objFolder.Files
Application.DisplayAlerts = False
Workbooks.Open Filename:=objFile
Columns("A:A").Select
Selection.TextToColumns Destination:=Range("A1"),
DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, Semicolon:=True
Range("b2:c2,p2").Select
Range("p2").Activate
Selection.Copy
Windows("xxx.xls").Activate
Cells(x, 8).Select
Selection.PasteSpecial Paste:=xlPasteValues
x = x + 1
Next objFile
Set objFolder = Nothing
Set objFSO = Nothing
ActiveWorkbook.Save
Workbooks.Close
Workbooks.Open "c:\xxx.xls"
end sub
Non ho capito.
Chiudere cosa?
All'interno del ciclo:
> For Each objFile In objFolder.Files
>
> Set objExcel = CreateObject("Excel.Application")
> Set objWorkbook = objExcel.Workbooks.Open(objFile.Path)
> Set objWorksheet = objWorkbook.Worksheets("Foglio1")
> 'il resto del tuo codice
> objWorkbook.Saved = True
> objWorkbook.Close
> objExcel.Quit
> Set objWorksheet = Nothing
> Set objWorkbook = Nothing
> Set objExcel = Nothing
>
> Next
i file vengono aperti e chiusi.
Nel file report, dove e quali dati devi inserire?