Sub ExportarCSV()
Set hojaDatos = ThisWorkbook.Sheets("Datos")
Set hojaCSV = ThisWorkbook.Sheets("CSV")
ultimaFila = hojaDatos.Cells(hojaDatos.Rows.Count, "B").End(xlUp).Row
Dim rangoCodigos As Range
Set rangoCodigos = hojaDatos.Range("G1:IB1")
rutaArchivoCSV = ThisWorkbook.Path & "\"
nombreArchivoCSV = "archivo.csv"
archivoCSV = FreeFile
Open rutaArchivoCSV & nombreArchivoCSV For Output As archivoCSV
For i = 2 To ultimaFila
clave = hojaDatos.Cells(i, 2).Value
mes = hojaDatos.Cells(i, 5).Value
año = hojaDatos.Cells(i, 6).Value
For Each celda In rangoCodigos
codigo = celda.Value
valor = hojaDatos.Cells(i, celda.Column).Value
If Not IsEmpty(codigo) Then
If IsNumeric(valor) Then
valor = CDbl(valor)
End If
Print #archivoCSV, clave & "," & codigo & "," & valor & "," & mes & "," & año
End If
Next celda
Next i
Close archivoCSV
MsgBox "Se ha generado el archivo CSV correctamente.", vbInformation
End Sub
Exportar datos a csv.xlsm