При обработке двух текстовых документов, у одного возникает ошибка : «Run-time error '7':Out of memory» Отличия между ними в количестве столбцов (если можно так выразится) Суть макроса прочесть содержимое текстового документа и выгрузить в эксель. Текстовый документ с названием «Элементы» выгружается без проблем и как надо, а вот »Материалы» выдает ошибку выше.
Сам код: [vba]
Код
Sub ReadTextFile() Dim arrTmp, arrLines Dim sFileName$, sTxtAll$, sPriceName$ Dim lRows&, i&, j&, lColumns& sFileName = Application.GetOpenFilename("Text Files (*.txt), *.txt") If sFileName = "False" Then Exit Sub
If InStr(sTxtAll, "# Parts") > 0 Then sPriceName = "Элементы" ElseIf InStr(sTxtAll, "# Materials") > 0 Then sPriceName = "Материалы" Else MsgBox "Не верный файл!!!", vbCritical, "Неверный файл" Exit Sub End If
lRows = UBound(Split(sTxtAll, vbCrLf)) ' кол-во строк для массива arrLines = Split(sTxtAll, vbCrLf) lColumns = UBound(Split(arrLines(1), vbTab)) ' кол-во столбцов для массива ReDim arrTmp(1 To lRows, 1 To lColumns + 1) ' размер массива
For i = 1 To lRows For j = 0 To UBound(Split(arrLines(i - 1), vbTab)) arrTmp(i, j + 1) = Split(arrLines(i - 1), vbTab)(j) Next j, i With ThisWorkbook.Worksheets(sPriceName) .Range("A1").Resize(UBound(arrTmp, 1), UBound(arrTmp, 2)).Value = arrTmp' Ошибка возникает здесь End With End Sub
[/vba] Пробовал выгрузить в лоб указав границы массива вручную, всё равно не помогает. Надеюсь на помощь спецов. Спасибо!!! PS строго не судите название темы, в голову больше ни чё не пришло
При обработке двух текстовых документов, у одного возникает ошибка : «Run-time error '7':Out of memory» Отличия между ними в количестве столбцов (если можно так выразится) Суть макроса прочесть содержимое текстового документа и выгрузить в эксель. Текстовый документ с названием «Элементы» выгружается без проблем и как надо, а вот »Материалы» выдает ошибку выше.
Сам код: [vba]
Код
Sub ReadTextFile() Dim arrTmp, arrLines Dim sFileName$, sTxtAll$, sPriceName$ Dim lRows&, i&, j&, lColumns& sFileName = Application.GetOpenFilename("Text Files (*.txt), *.txt") If sFileName = "False" Then Exit Sub
If InStr(sTxtAll, "# Parts") > 0 Then sPriceName = "Элементы" ElseIf InStr(sTxtAll, "# Materials") > 0 Then sPriceName = "Материалы" Else MsgBox "Не верный файл!!!", vbCritical, "Неверный файл" Exit Sub End If
lRows = UBound(Split(sTxtAll, vbCrLf)) ' кол-во строк для массива arrLines = Split(sTxtAll, vbCrLf) lColumns = UBound(Split(arrLines(1), vbTab)) ' кол-во столбцов для массива ReDim arrTmp(1 To lRows, 1 To lColumns + 1) ' размер массива
For i = 1 To lRows For j = 0 To UBound(Split(arrLines(i - 1), vbTab)) arrTmp(i, j + 1) = Split(arrLines(i - 1), vbTab)(j) Next j, i With ThisWorkbook.Worksheets(sPriceName) .Range("A1").Resize(UBound(arrTmp, 1), UBound(arrTmp, 2)).Value = arrTmp' Ошибка возникает здесь End With End Sub
[/vba] Пробовал выгрузить в лоб указав границы массива вручную, всё равно не помогает. Надеюсь на помощь спецов. Спасибо!!! PS строго не судите название темы, в голову больше ни чё не пришло Sobirjon