Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Rinominare, aprire e chiudere tutti i file CSV di una cartella

171 views
Skip to first unread message

Simone

unread,
Aug 31, 2007, 9:31:24 AM8/31/07
to
Devo risolvere un problema di reportistica.
Ho una cartella contenente un centinaio di file CSV. Dovrei aprirli e
copiare le informazioni che mi servono in unico file.
Da quel che leggo dovrei modificare l'estensione dei file per aprirli
con VBA.
Mi blocco su due punti:
Come posso rinominare l'estensione dei file csv, magari in txt?
Per aprirli tutti posso usare un ciclo for each, in che modo?

Grazie per la disponibilità

Saluti

Simone

Mauro Gamberini

unread,
Aug 31, 2007, 9:48:20 AM8/31/07
to
Ho una cartella contenente un centinaio di file CSV. Dovrei aprirli e
copiare le informazioni che mi servono in unico file.
Da quel che leggo dovrei modificare l'estensione dei file per aprirli
con VBA.
**********************************************

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/


Simone

unread,
Sep 3, 2007, 7:51:31 AM9/3/07
to
On 31 Ago, 15:48, "Mauro Gamberini"

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

Mauro Gamberini

unread,
Sep 3, 2007, 9:13:16 AM9/3/07
to
> 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.
>

Prova:

>> For Each objFile In objFolder.Files
>> 'Il tuo codice per aprire e leggere il file

objFile.Close
>> Next

Simone

unread,
Sep 3, 2007, 9:32:47 AM9/3/07
to
On 3 Set, 15:13, "Mauro Gamberini"

Avevo già provato, ma con objfile sembra leggere il percorso e non il
file...

Mauro Gamberini

unread,
Sep 3, 2007, 10:05:15 AM9/3/07
to
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

--

Simone

unread,
Sep 4, 2007, 7:02:16 AM9/4/07
to
On 3 Set, 16:05, "Mauro Gamberini"


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

Mauro Gamberini

unread,
Sep 4, 2007, 10:31:35 AM9/4/07
to
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.
*******************************************

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?

0 new messages