Вопрос и формат данных текстового файла не понятны. Из того, что я понял из требования «сопоставить эти результаты с определенным именем ячейки», я думаю, что сохранение каждой строки в массиве вообще не требуется. Однако в вашем коде
- Я не увеличивается
- найдена опечатка arrBP вместо arrAP
Исправление вышесказанного может дать вам массив каждой строки файла APPrices.txt для дальнейшей обработки.
Однако, если макет данных текстового файла и ваши требования, как показано ниже
тогда может попробовать простой код как без массива
Option Base 0
Public Sub ImportPrices_Click()
''Declare Variables
Dim PathName As String
Dim FileName As String
Set fs = CreateObject("Scripting.FileSystemObject")
PathName = "C:\Users\user\Desktop"
FileName = PathName & "\" & "APPrices.txt"
Set ap = fs.OpenTextFile(FileName, 1)
Dim Cols As Variant, Ln As String, Price As String, LocPin As String
Do While Not ap.AtEndOfStream
Ln = ap.ReadLine
Cols = Split(Ln, Chr(9)) ' each line is splited on tab ie Chr(9)
Price = Cols(7)
LocPin = Cols(3) & Cols(4)
Debug.Print LocPin, Price
'you may match the locPin here and put the price the cells
Loop
ap.Close
End Sub
Или другой простой способ (Изменить по требованию)
Sub test2()
Dim wb As Workbook
Dim Rng As Range, C As Range, LastRow As Long
Workbooks.OpenText FileName:="C:\Users\user\Desktop\APPrices.txt", Origin:=437, _
StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False _
, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1), _
Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1)), _
TrailingMinusNumbers:=True
Set wb = ActiveWorkbook
For Each Rng In wb.ActiveSheet.UsedRange.Columns(8).Cells
Rng.Offset(, 1).FormulaR1C1 = "=RC[-5]&RC[-4]" 'Create column 9 With concanted LOc & Pin
Next
'Search Column 9 LOcPIN
For Each Rng In ThisWorkbook.Worksheets("Sheet1").Range("A2:A25").Cells
Set C = wb.ActiveSheet.Columns(9).Find(Rng.Value) ', LookIn:=xlValues) ', Lookat:=xlWhole)
If Not C Is Nothing Then
Rng.Offset(, 1).Value = C.Offset(, -1).Value ' Price
End If
Next Rng
wb.Close False
End Sub