write read open leer importar from excel vba excel-vba csv

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.

  1. ¿Es posible "crear" un archivo .csv separado de VBA ?
  2. ¿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