Копирование строк из Wordpad в Excel с использованием VBA

Я пишу некоторый код, где я импортирую некоторые файлы в TMX (форма xml). Я пробовал разные варианты

а) используя Open FileName For input, но это портит кодировку символов

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

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

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

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

Спасибо

1 ответ

Решение

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

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 изменить кодировку файла на ANSI

Если у вас есть большие файлы, для которых требуется поток ADO, вы можете сначала разбить большие файлы, как описано в следующем решении: Как разбить большой текстовый файл на более мелкие файлы с одинаковым количеством строк?

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

Другие вопросы по тегам