|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
26.03.2012, 01:17 | #1 |
Пользователь
Регистрация: 26.03.2012
Сообщений: 42
|
Чтение текста в Юникоде из txt файла в столбец Excel 2010
В общем пытаюсь прочесть, но корректно (без кракозябр) получается только первая строка. Винда английская.
Sub ReadTextFile() Dim Buffer Dim FSO As FileSystemObject Dim FSOFile As TextStream Dim FilePath As String r = 1 FilePath = "C:\text.txt" Set FSO = New FileSystemObject If FSO.FileExists(FilePath) Then Set FSOFile = FSO.OpenTextFile(FilePath, 1, False) Buffer = vbNullString Do While Not FSOFile.AtEndOfStream Buffer = FSOFile.ReadLine() ThisWorkbook.Worksheets(1).Cells(r, 1).Value = StrConv(Buffer, vbFromUnicode) r = r + 1 Loop FSOFile.Close Else MsgBox (FilePath & " does not exist") End If End Sub Прошу указать на мои ошибки или подсказать решение. Спасибо |
26.03.2012, 03:52 | #3 |
Пользователь
Регистрация: 26.03.2012
Сообщений: 42
|
Как я понимаю Юникод имеет несколько разновидностей. Какую альтернативу стоит попробовать, и как перекодировать средствами VBA.?Либо записать в файл в другой разновидности Юникод?(Этот файл я записал из экселя)
Текст должен обязательно быть в юникоде для того чтобы рускоязычные буквы не превращялись в хлам на англоязычной винде |
26.03.2012, 05:46 | #4 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Функции перекодировки текстовых строк и текстовых файлов:
http://excelvba.ru/code/encode |
26.03.2012, 14:42 | #5 |
Пользователь
Регистрация: 26.03.2012
Сообщений: 42
|
Но можно пойти другим путем. Если удалось прочесть весь текст из юникода в одну ячейку (и в одну переменную), то можно просто разбить ее на строки (которые изначально были в текстовом файле) и записать их все в колонку.
Либо может можно сразу закинуть эту переменную в колонку Эксель? Вот тока как это сделать? Чтоб все было кристально понятно прилагаю снимок. Там показан текстовый файл который был в юникоде, и экселевский файл с загруженным текстом. В ячейке А1 то что получилось, в колонке B то чего нужно добиться. Вот текст VBA который использовался для считывания Юникода на английской винде. Sub Макрос1() Dim Buffer As String, Simv As String * 1 Open "C:\text.txt" For Random As #1 Len = 1 Do While Not EOF(1) Get #1, , Simv Buffer = Buffer & StrConv(Simv, vbFromUnicode) Loop Close #1 ActiveCell.Value = Buffer End Sub Текст в свою очередь был записан в файл с помощью кода на русской винде: Sub SaveWorksheetAsUnicodeTxt() thisworkbook.sheets(1).copy activeworkbook.saveas "C:\text.txt", xlunicodeText activeworkbook.close false End Sub Что посоветуете? Как заставить его создать колонку? Заранее спасибо всем обитателям форума. |
26.03.2012, 14:47 | #6 |
Старожил
Регистрация: 08.02.2012
Сообщений: 2,173
|
А если так?
Код:
Правильно поставленная задача - три четверти решения.
|
26.03.2012, 15:29 | #7 |
Пользователь
Регистрация: 26.03.2012
Сообщений: 42
|
неа, не пашет
|
26.03.2012, 15:57 | #8 |
Старожил
Регистрация: 08.02.2012
Сообщений: 2,173
|
А вот так у меня работает:
Код:
Правильно поставленная задача - три четверти решения.
|
26.03.2012, 18:28 | #9 |
Пользователь
Регистрация: 26.03.2012
Сообщений: 42
|
Да, интересный трюк менять число во второй и третьей строке программы. Действительно записывает все в колонку, только теряет колличество ячеек. На прикрепленном снимке все видно
Только он из за этого не годится. Потому что текстовый файл это по сути Save. Я пытаюсь смоделировать ситуацию когда столбец сохраняется из руской винды(и оффиса), а потом загружается в такую же книгу на английском компе без потери информации. |
26.03.2012, 19:10 | #10 |
Старожил
Регистрация: 08.02.2012
Сообщений: 2,173
|
ОМГ...
Код:
Правильно поставленная задача - три четверти решения.
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Чтение данных из txt файла. | werrey | Общие вопросы Delphi | 21 | 07.01.2012 11:56 |
Чтение данных из файла txt, язык C | Sneeze | Общие вопросы C/C++ | 8 | 30.12.2011 14:34 |
if и чтение+вывод из файла .txt | webber9989 | PHP | 4 | 24.08.2010 22:13 |
PL/SQL, построчное чтение txt файла | seriousMalish | SQL, базы данных | 0 | 09.06.2010 21:31 |
Чтение из TXT файла | soonner | Общие вопросы Delphi | 1 | 14.03.2009 13:52 |