Вместо использования поиска, если вам нужно только найти столбец в строке заголовка, вы можете просто перебрать первую строку в поисках совпадения. Я пытался заключить это в функцию, которую вы можете вызвать.
Вы указываете путь к файлу, имя столбца и, необязательно, тип сравнения, который хотите выполнить. По умолчанию сравнение выполняется с учетом регистра (двоичное), но также может быть заменено на регистр без учета регистра.
Функция
Option Explicit
Public Function GetColumnIndexFromFile(FilePath As String, ColumnName As String, Optional CompareMethod As VbCompareMethod = VbCompareMethod.vbBinaryCompare)
Dim wb As Workbook
Dim ws As Worksheet
Dim Column As Range
Dim Columns As Range
Dim ColumnIndex As Long
Set wb = Workbooks.Open(FilePath)
Set ws = wb.Sheets(1)
With ws
Set Columns = .Range(.Cells(1, 1), .Cells(1, .Cells(1, .Columns.Count).End(xlToLeft).Column))
End With
For Each Column In Columns
If StrComp(Column.Value2, ColumnName, CompareMethod) = 0 Then
GetColumnIndexFromFile = Column.Column
Exit Function
End If
Next
End Function
Пример использования
Public Sub ExampleCall()
Debug.Print GetColumnIndexFromFile("G:\depts\Pri\RA.csv", "ProductType")
End Sub