2015-06-01 2 views
0

Я пишу код, в котором я импортирую некоторые файлы в формате TMX (форма xml). Я попробовал различные вариантыКопирование строк из Wordpad в Excel с помощью VBA

а) с помощью Open FileName Для ввода, но это ухудшит кодировку

б) открытие файла и копирование данных с помощью msoDialog, но это возвращает ошибку, если файл слишком велика (что часто бывает), и это поместило данные в совершенно грязную манеру.

c) открытие файла с помощью блокнота, но есть те же ограничения, что и копирование всего файла в Excel в качестве предыдущей опции. Я не пытаюсь использовать функцию оболочки, вызывающую на Wordpad.

Мой вопрос прямо сейчас, это то, что мне нужно скопировать файл построчно, чтобы лечить его содержание в соответствии с моими потребностями (надеюсь, не теряя при этом кодировку

ли кто-нибудь знает, как копировать каждую строку из файл открыт в WordPad и вставьте его после обработки (выбор соответствующих элементов) в Excel

Спасибо

+0

Возможный дубликат: текст в формате Rich (с тегами форматирования) в Excel для неформатированного текста (HTTP: // StackOverflow .c ом/вопросы/1673025/форматированный текст формат, с форматированием тегами-в-первенствует-к-бесформатный-текст). С уважением, –

+0

Вы используете вкладку «Данные» из внешних источников и выбираете XML. Вы хотите XML, а не RTF/Wordpad? Вы пытались открыть его в Word? Я бы использовал объект XMLDocument или XMLNode в .NET самостоятельно. –

+0

Нет, это не повторение этого вопроса. Этот вопрос для вывода, мой вопрос о вводе и как выбрать строку после строки из Wordpad. – user4384294

ответ

0

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

Public Sub ImportTMXtoExcel() 

Call Application.FileDialog(msoFileDialogOpen).Filters.Clear 
Call Application.FileDialog(msoFileDialogOpen).Filters.Add("TMX Files", "*.tmx") 
Application.FileDialog(msoFileDialogOpen).Title = "Select a file to import..." 
Application.FileDialog(msoFileDialogOpen).AllowMultiSelect = False 
intChoice = Application.FileDialog(msoFileDialogOpen).Show 
If intChoice <> 0 Then 
    strFileToImport = Application.FileDialog(msoFileDialogOpen).SelectedItems(1) 
Else 
    Exit Sub 
End If 

intPointer = FreeFile() 
Open strFileToImport For Input Access Read Lock Read As #intPointer 

intCounter = 0 
Do Until EOF(intPointer) 
    Line Input #intPointer, strLine 
    intCounter = intCounter + 1 
    Worksheets(1).Cells(intCounter + 1, 1).Value2 = strLine 
Loop 

Close intPointer 

End Sub 

Для других кодировок вы можете использовать поток ADO, как описано в этом растворе: VB6/VBScript change file encoding to ansi

Если у вас есть большие файлы, которые требуют поток ADO, то вы могли бы хотеть рассмотреть разбивают крупные файлы первой, как описано в этом растворе: How to split a large text file into smaller files with equal number of lines?

следующий сайт предоставляет инструмент, который имитирует команду раскол Unix для Windows, в командной строке: https://www.fourmilab.ch/splits/

+0

Спасибо, Ральф, но это не сортирует проблему. Кодировка символов остается испорченной. Я надеялся, что «Access Read Lock» сделает трюк, но, увы, нет. :-( – user4384294

+0

@ user4384294: Мне кажется, что вам нужно объединить несколько решений, чтобы добраться туда. К сожалению, нет простого решения, поскольку Excel не очень силен при обработке разных кодировок. У меня была та же проблема. теперь я получаю все файлы> 10 МБ, используя ansi. – Ralph

+0

Спасибо, Ральф. Да, мне нужно объединить решения, которые усложняют мою задачу. LOT. Мне теперь нужно решение для определения размера файла перед его открытием. – user4384294

Смежные вопросы