ho riprovato adesso e c'è la soluzione e non occorre nemmeno cambiare
nome del file.
- Mettere i file nella cartella c:\test1
- avere 2 macro (scritte sotto) di cui una che pensa a elaborare i
file, mentre la principale macro [SMEcut] deve includere "prima" anche
la suddivisione del testo in colonne e non come facevo io "solo" un
"taglia righe e colonne". [solo così i CSV possono essere processati]
Però ora mi chiede sempre ad ogni cartella se voglio salvare e
sostituire i dati. Come posso farlo procedere senza questa richiesta?
E' molto utile però mettere un parametro nella macro che mi consenta di
scegliere quali tipi di file elaborare in una cartella (.CSV o altro)
altrimenti processa anche queli con altra estensione (indiferentemente)
che magari non c'entrano nulla.
Le macro :
---------------------------------------------------
Sub ExecuteApplyMacroToAllFiles()
'Change the path to the main folder
Call ApplyMacroToAllFiles("C:\test1")
End Sub
---------------------------------------------------
Sub ApplyMacroToAllFiles(ByVal MyPath As String)
Dim FileSys As Object
Dim objFolder As Object
Dim objFile As Object
Dim wkbOpen As Workbook
Set FileSys = CreateObject("Scripting.FileSystemObject")
Set objFolder = FileSys.GetFolder(MyPath)
Application.ScreenUpdating = False
For Each objFile In objFolder.Files
Set wkbOpen = Workbooks.Open(Filename:=objFile)
'Change the name of your macro
Call SMEcut
Debug.Print wkbOpen.Name
wkbOpen.Close SaveChanges:=True
Next
Application.ScreenUpdating = True
End Sub
------------------------------------------------------------
Sub SMEcut()
'
' SMEcut Macro
'
'
Columns("A:A").Select
Selection.TextToColumns Destination:=Range("A1"),
DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False,
Tab:=False, _
Semicolon:=True, Comma:=False, Space:=False, Other:=False,
FieldInfo _
:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1),
Array(5, 1), Array(6, 1), _
Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11,
1), Array(12, 1), Array(13, 1 _
), Array(14, 1), Array(15, 1), Array(16, 1), Array(17, 1),
Array(18, 1), Array(19, 1), Array _
(20, 1), Array(21, 1), Array(22, 1), Array(23, 1), Array(24,
1), Array(25, 1), Array(26, 1), _
Array(27, 1), Array(28, 1), Array(29, 1), Array(30, 1),
Array(31, 1), Array(32, 1)), _
TrailingMinusNumbers:=True
Columns("B:AZ").Select
Selection.Delete Shift:=xlToLeft
Rows("1:1").Select
Selection.Delete Shift:=xlUp
End Sub