Хорошо, в общем, у меня есть XSLM-файл, содержащий около 40 тыс. Строк.Мне нужно экспортировать эти строки в настраиваемый формат CSV - с разделителями ^ и ~ отмечая границы каждой ячейки.После экспорта они считываются приложением Joomla Importer и обрабатываются в базе данных.Я нашел хороший макрос-скрипт, который делает именно это, и настроил его для использования правильных разделителей.
Sub CSVFile()
Dim SrcRg As Range
Dim CurrRow As Range
Dim CurrCell As Range
Dim CurrTextStr As String
Dim ListSep As String
Dim FName As Variant
FName = Application.GetSaveAsFilename("", "CSV File (*.csv), *.csv")
'ListSep = Application.International(xlListSeparator)
ListSep = "^" ' Use ^ as field separator.
If Selection.Cells.Count > 1 Then
Set SrcRg = Selection
Else
Set SrcRg = ActiveSheet.UsedRange
End If
Open FName For Output As #1
For Each CurrRow In SrcRg.Rows
CurrTextStr = ìî
For Each CurrCell In CurrRow.Cells
CurrTextStr = CurrTextStr & "~" & CurrCell.Value & "~" & ListSep
Next
While Right(CurrTextStr, 1) = ListSep
CurrTextStr = Left(CurrTextStr, Len(CurrTextStr) - 1)
Wend
Print #1, CurrTextStr
Next
Close #1
End Sub
Однако я обнаружил, что сгенерированные CSV слишком велики, чтобы с ними можно было работатьдоступное время выполнения скрипта.Я могу разделить файлы вручную примерно до 5000 строк, и это достаточно хорошо.Я хотел бы настроить вышеприведенный скрипт следующим образом:
- Сохраняет строку заголовка для вставки в каждый файл.
- Спрашивает пользователя, сколько строк должно быть выведенодля каждого файла.
- Добавляет -pt # к выбранному сохранению в качестве имени файла.
- Обрабатывает файл Excel в столько «chunk» csv файлов, сколько требуется.
Например, если мое имя файла было выведено, номер разрыва файла был 5000, а файл excel имел 14000 строк, я бы в итоге получил output-pt1.csv, output-pt2.csv и output-pt3.csv.
Если бы это делал только я, я бы продолжал ломать файлы вручную, но когда все сказано и сделано, мне нужно передать эти файлы клиенту, запускающему проект, так что прощетем лучше.
Очень ценю за любые идеи.