Файл .xlsm, который не рассматривает разделитель региональных списков как канал, но по умолчанию принимает запятую - PullRequest
0 голосов
/ 15 марта 2019

У меня есть сценарий, в котором SQL-запрос db2 должен извлекать данные в CSV-файл, а данные CSV-файла должны быть разделены разделителем каналов. Я сделал это с помощью изменения региональных настроек в панели управления, изменив разделитель списка. в | (труба) из , (запятая) ... после этого шага поток в моей программе, есть код VBA в файле xlsm, который открывает этот файл CSV с разделителями и копирует его содержимое в него, но здесь разделитель по умолчанию изменяется на , (запятая) автоматически и без учета разделителя канала. Я отладил VBA, и проблема с

workbooks.open ( "Путь \ file.csv")

здесь файл CSV открывается с запятой в качестве разделителя по умолчанию и копируется в файл xlsm.

ex: Данные файла CSV с разделителями канала похожи на приведенные ниже, которые были правильно разделены на несколько столбцов разделителем канала

1234567|jane,smith|canada|False...

Но файл .xlsm открывает файл, как показано ниже, и копирует данные в него всего в два столбца, рассматривая запятую как разделитель, поле имени выбирается как фамилия и имя с запятой в между которыми действует как разделитель и разделяет несколько столбцов на два столбца.

1234567|jane    smith|canada|False..

Как заставить этот xlsm-файл рассматривать разделитель как конвейер, но не запятую ... любой код должен быть написан или какие-либо изменения настроек?

1 Ответ

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

CSV = значение, разделенное запятыми. Так как это не файл CSV, попробуйте назвать его .txt и указать, что разделитель является каналом при импорте, в противном случае он может по умолчанию перейти на tab.

Это работает:

Sub OpenCSV()

Dim wkbTemp As Workbook
Dim sPath As String, sName As String

sName = "TestFile.txt"
Set wkbTemp = Workbooks.Open(Filename:=sName, Format:=6, Delimiter:="|")

End Sub

Это не

Sub OpenCSV()

Dim wkbTemp As Workbook
Dim sPath As String, sName As String

sName = "TestFile.csv"
Set wkbTemp = Workbooks.Open(Filename:=sName, Format:=6, Delimiter:="|")

End Sub

Excel ожидает, что файл с расширением .CSV будет правильно отформатирован с использованием разделителя запятых и строк в двойных кавычках. Текстовые файлы с разделителями для конвейера: .txt, точка.

...