Я написал визуальный базовый макрос для загрузки CSV-файла в Excel, который я использую довольно часто.Импорт csv с цитированной новой строкой с использованием QueryTables в Excel
К сожалению, если файл csv содержит цитированные символы новой строки, результат отличается от того, что вы получили бы, если бы вы открыли файл csv напрямую с помощью excel. В отличие от обычного объекта импорта, QueryTables.add()
предполагает, что любая новая строка, с которой она сталкивается, является ли котировка или нет, является концом строки.
Есть ли способ обойти это? Я бы предпочел решение, которое не предполагало предварительную модификацию входящих CSV-файлов для удаления новых строк, но я также открыт для предложений на этом фронте. Тем не менее, я хочу иметь новые строки в результирующих ячейках файла excel.
Соответствующая часть моего макроса:
Sub LoadMyFile()
' Query the table of interest
With ActiveSheet.QueryTables.Add(Connection:="TEXT;" _
& ThisWorkbook.Path & "\" & Range("A1").Value & ".csv", _
Destination:=Range("$A$2"))
.Name = ActiveSheet.Name
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlOverwriteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 437
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
End Sub
Вот пример файла CSV с цитируемым новой строкой
"firstCol","secondCol"
"name1","data
one"
"name
2","data two"
Макрос считывает имя файла (без расширения .csv) из ячейки A1 и предполагает, что файл csv находится в том же каталоге, что и файл excel, содержащий макрос.
Я использую 32-разрядный Office Professional 2010 на машине с Windows 7.
Благодарим за это предложение. Это выглядит многообещающе. Я попробую, когда вернусь в офис в понедельник. – farnsy
Как написано, это решение открывает файл в новой книге (а также заполняет кучу ячеек с NA). Однако я могу работать с ним. Спасибо – farnsy
Lovely. Local: = True - это то, что я искал. Без этого столбцы были повреждены. – Unicco