Копирование строк из 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/