У меня есть рабочая тетрадь со многими именованными ячейками на разных листах.Я пытаюсь написать сценарий VBA, который будет читать внешний файл .csv для извлечения имени и значения переменной, чтобы я мог обновить значения именованных ячеек в своей книге.
Я могучитать и перебирать данные в файле CSV, но я не могу обновить именованные значения.
В идеале сценарий должен проверить, что имя переменной является допустимой именованной ячейкой в книге, а затем обновить с новым значением какопределено в файле .csv.
Я выполнил несколько итераций, но суть кода:
Public Sub readCSV()
'
' VBA script to read external CSV file
'
'
Dim filePath As String
Dim inFilePath As String
Dim inCase As String
strWorkBook = ActiveWorkbook.Name
filePath = Range("aString").Value
tmpsep = InStrRev(filePath, "\")
inCase = Right(filePath, Len(filePath) - tmpsep)
inFilePath = Left(filePath, Len(filePath) - Len(inCase))
' Check that path is valid and exit if not
Range("aString").Select
If IsEmpty(ActiveCell.Value) Then
MsgBox "ERROR! No Input File Defined - Exiting!"
Range("H7").Select
End
End If
' Open data file
Workbooks.Open Filename:=filePath
' Loop through variable names in input file
varNamCol = "C"
varColNum = "D"
' Ensure we're in input file
Windows(inCase).Activate
' Find last row input file - Call separate routine (working)
Call FindLastRow.FindLastRow(lRow)
i = 1
imax = lRow
Do While i <= imax
Windows(inCase).Activate
' Read Variable Name and Value from csv
inVarName = Range(varNamCol & I).Value
inVarValue = Range(varColNum & I).Value
If IsEmpty(inVarName) Then
MsgBox " Variable is empty - Moving On"
GoTo NextIteration
Else
Windows(strWorkBook).Activate
Range(inVarName).Value = inVarValue
End If
NextIteration:
i = i + 1
Loop
End Sub