Una famiglia di software per fogli di calcolo Microsoft con strumenti per l'analisi, la creazione di grafici e la comunicazione dei dati.
Grazie Mauro...mi puoi indicare per un futuro...qualora riutilizzassi questa macro in altri file su quali stringhe devo agire?
Mi riferisco al semplice cambio di range di selezione!
E' tutto in questa parte del codice:
With Worksheets("Foglio1")
For lRiga = 2 To 100
sTemp = ""
For lCol = 1 To 26
sTemp = sTemp & .Cells(lRiga, lCol).Value & ";"
Next
sTesto = sTesto & Mid(sTemp, 1, Len(sTemp) - 1) & vbNewLine
Next
End With
Foglio1 va modificato con il nome del foglio dal quale copi i dati.
For lRiga = 2 To 100, sta a significare che prendiamo i dati da riga 2 a riga 100 e lCol = 1 To 26 che per ogni riga prendiamo 26 celle.
Se (se) la tabella dalla quale prendi i dati è *isolata* dal resto del codice e non ha righe/colonne vuote, possiamo modificare il codice della sub m così:
Public Sub m()
Dim FileNum As Integer
Dim sTesto As String
Dim sTemp As String
Dim lRiga As Long
Dim lRighe As Long
Dim lCol As Long
FileNum = FreeFile
If Dir(myDesktop & "\Condivisa\NomeFile.csv") <> "" Then
Kill myDesktop & "\Condivisa\NomeFile.csv"
Open myDesktop & "\Condivisa\NomeFile.csv" For Append As #FileNum
Else
Open myDesktop & "\Condivisa\NomeFile.csv" For Output As #FileNum
End If
With Worksheets("Foglio1")
lRighe = .Range("A1").CurrentRegion.SpecialCells(xlCellTypeLastCell).Row
lCol = .Cells(1, .Columns.Count).End(xlToLeft).Column
For lRiga = 2 To lRighe
sTemp = ""
For lCol = 1 To 26
sTemp = sTemp & .Cells(lRiga, lCol).Value & ";"
Next
sTesto = sTesto & Mid(sTemp, 1, Len(sTemp) - 1) & vbNewLine
Next
End With
Print #FileNum, sTesto
Close #FileNum
End Sub
In questo modo non devi più preoccuparti delle dimensioni della tabella.
NOTA. Nell'esempio considero che la tua tabella inizi da A1 e che nella prima riga tu abbia una intestazione che non vuoi portare nel .csv.