excel - open - read text file vba
¿Cómo crear un archivo CSV separado de VBA? (3)
Necesito dar como resultado algunos resultados como un archivo .csv
, que luego otro proceso analiza. Para producir estos resultados, tengo un enorme libro de trabajo que contiene todas las macros y funciones que necesito.
- ¿Es posible "crear" un archivo
.csv
separado deVBA
? - ¿Es posible usar las características de
VBA
para escribir en él en lugar de simplemente escribir en un enfoque de "texto sin formato"?
Gracias :)
Es algo así como lo que quieres?
Option Explicit
Sub WriteFile()
Dim ColNum As Integer
Dim Line As String
Dim LineValues() As Variant
Dim OutputFileNum As Integer
Dim PathName As String
Dim RowNum As Integer
Dim SheetValues() As Variant
PathName = Application.ActiveWorkbook.Path
OutputFileNum = FreeFile
Open PathName & "/Test.csv" For Output Lock Write As #OutputFileNum
Print #OutputFileNum, "Field1" & "," & "Field2"
SheetValues = Sheets("Sheet1").Range("A1:H9").Value
ReDim LineValues(1 To 8)
For RowNum = 1 To 9
For ColNum = 1 To 8
LineValues(ColNum) = SheetValues(RowNum, ColNum)
Next
Line = Join(LineValues, ",")
Print #OutputFileNum, Line
Next
Close OutputFileNum
End Sub
No olvides que deberás poner comillas alrededor de cualquier campo que contenga una coma.
La respuesta de Tony generalmente funciona, pero no maneja el caso donde el texto contiene comas o comillas. Puede preferir utilizar el método Workbook.SaveAs.
Aquí hay un ejemplo si desea guardar el contenido de Sheet1 como un archivo csv separado.
Sub create_csv()
Dim FileName As String
Dim PathName As String
Dim ws As Worksheet
Set ws = ActiveWorkbook.Sheets("Sheet1")
FileName = "filename.csv"
PathName = Application.ActiveWorkbook.Path
ws.Copy
ActiveWorkbook.SaveAs FileName:=PathName & "/" & FileName, _
FileFormat:=xlCSV, CreateBackup:=False
End Sub
Imagine que su Sheet1 contiene:
lorem ipsum
saber, m ips "um"
El archivo de salida csv será:
lorem, ipsum
"lore, m", "ips" "um" ""
Puede escribir una macro como para guardar el libro de trabajo actual (archivo de Excel abierto) en CSV de VBA:
ActiveWorkbook.SaveAs Filename:="C:/Book1.csv", _
FileFormat:=xlCSVMSDOS, CreateBackup:=False