VBA создавать CSV-файлы - PullRequest
       2

VBA создавать CSV-файлы

0 голосов
/ 25 марта 2019

Сохранение командных файлов в формате csv из excel.

VBA разделяет один лист данных Excel на отдельные файлы после каждой 833-й строки.

Теперь мне нужно, чтобы эти файлы были csvs, а не Excels. Как я могу сохранить непосредственно в .csv (разделенные запятыми) файлы?

Я сделал соответствующий VBA для сохранения в Excel (xml), но не в csvs. Мне нужны CSV.

Sub Macro1()
Dim rLastCell As Range
Dim rCells As Range
Dim strName As String
Dim lLoop As Long, lCopy As Long
Dim wbNew As Workbook

    With ThisWorkbook.Sheets(1)
    Set rLastCell = .Cells.Find(What:="*", After:=[A1], SearchDirection:=xlPrevious)

        For lLoop = 1 To rLastCell.Row Step 833
        lCopy = lCopy + 1
            Set wbNew = Workbooks.Add
                .Range(.Cells(lLoop, 1), .Cells(lLoop + 833, .Columns.Count)).EntireRow.Copy _
                    Destination:=wbNew.Sheets(1).Range("A1")
            wbNew.Close SaveChanges:=True, Filename:="Chunk" & lCopy & "Rows" & lLoop & "-" & lLoop + 833
        Next lLoop
    End With


End Sub

Фактические результаты: Excels Ожидаемые результаты: файлы CSV

Ответы [ 2 ]

0 голосов
/ 25 марта 2019

Предполагается:

strPath = путь к целевой папке

autoIncrement = переменная для увеличения каждого цикла (чтобы мы могли различать имена файлов)

strRow = строка, представляющая 1 строку в CSV;объединить все столбцы каждой строки Excel, чередуя значения с разделителем (",")


Вы можете вывести CSV с этим внутри цикла:

Open strPath & "\file-" & autoIncrement & ".csv" For Output As #fileNumber
Print #fileNumber, strRow
Close #fileNumber
0 голосов
/ 25 марта 2019

Как то так?

Sub CSVQuotes()

Dim SrcRange As Range
Dim CurrRow As Range
Dim CurrCell As Range
Dim CurrTextStr As String
Dim ListSeparator As String
Dim FileName As Variant
Dim current As String    

FileName = Application.GetSaveAsFilename()
ListSeparator = ";"

Set SrcRange = Sheets("DATI").UsedRange

Open FileName For Output As #1
For Each CurrRow In SrcRange.Rows
    CurrTextStr = ""

    For Each CurrCell In CurrRow.Cells
        current = CurrCell

        CurrTextStr = CurrTextStr & """" & current & """" & ListSeparator
    Next
    While Right(CurrTextStr, 1) = ListSeparator
        CurrTextStr = Left(CurrTextStr, Len(CurrTextStr) - 1)
    Wend
    Print #1, CurrTextStr
    Next
Close #1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...