У меня есть лист Excel, который объединяет множество информации, если это применимо, и вкладку, которая затем использует функцию агрегирования, чтобы поместить всю эту информацию в один список.
Затем у меня есть приведенный ниже код, который изначально был построенс помощью людей, работающих здесь, чтобы проработать и создать csv-файлы для каждого dim rowinfile.
При создании листа я думал, что это будет работать, но после его построения немного больше, длина данных может варьироваться,и число строк, необходимое для каждого файла CSV, может варьироваться, поэтому, например, у меня может быть вкладка, которая имеет 6 строк данных, которые необходимо преобразовать в один файл CSV, или содержит 100 строк данных, которые необходимо преобразовать в8 CSV-файлов.
Первоначально я думал, что я просто поместил бы данные в худшем случае, скажем, 30 строк, и чтобы макрос создал файл CSV, как это, но программа, которую мне нужно загрузить в CSV-файлы, будетне работает, если в конце csv есть пустые строки.
Итак ... Мне либо нужен способ удаления блаnk строк в конце каждого CSV, который, когда используется диапазон, много больше, чем число строк, в которых есть данные (из-за количества ячеек, которые должны иметь формулу агрегирования, и даже если я перенесу агрегат в"если результат = ничего, то" "" CSV по-прежнему видит строку с "" в качестве строки)
или
Мне нужен способ изменить мой код, чтобы он проходил через создание отдельногоCSV-файлы, основанные на серии переменных, то есть создать CSV-файл с 6 строками (я могу получить это число из ячейки в соответствии с моим последним кодом ниже), но не могу понять, как затем перейти и изменить этот ссылочный номер на другую ячейкуна каждом проходе?
Уверен, что переход с переменной длины проще, но мне не хватает навыков самому его отработать.
Спасибо !!
'resets used range to try and stop creating blank csv files
a = ActiveSheet.UsedRange.Rows.Count
Dim wb As Workbook
Dim ThisSheet As Worksheet
Dim NumOfColumns As Integer
Dim RangeToCopy As Range
Dim WorkbookCounter As Integer
Dim RowsInFile
Application.ScreenUpdating = True
'Initialize data
Set ThisSheet = ThisWorkbook.ActiveSheet
NumOfColumns = 1
WorkbookCounter = 1
RowsInFile = Sheets("Upload").Cells(1, 4).Value '10 'how many rows (incl. header) in new files?
For p = 1 To ThisSheet.UsedRange.Rows.Count Step RowsInFile
'Paste the chunk of rows for this file
Set RangeToCopy = ThisSheet.Range(ThisSheet.Cells(p, 1), ThisSheet.Cells(p + RowsInFile - 1, NumOfColumns))
xName = ThisWorkbook.Path & "\Files for upload testing\" & "Purchase" & Format(Now(), "yyyymmddhhmmss") & ".csv"
Application.Wait (Now + TimeValue("0:00:02"))
Open xName For Output As #1
For Each xRow In RangeToCopy.Rows
xStr = ""
For Each xCell In xRow.Cells
xStr = xStr & xCell.Value & Chr(9)
Next
While Right(xStr, 1) = Chr(9)
xStr = Left(xStr, Len(xStr) - 1)
Wend
Print #1, xStr
Next
Close #1
'Increment file counter
WorkbookCounter = WorkbookCounter + 1
Next p
Application.ScreenUpdating = True
Set wb = Nothing
End Sub