Я выполняю этот UDF и сопровождающий макрос для извлечения определенных значений ячеек из закрытых книг.
Он всегда работал нормально, так как степень извлечения содержимого ячейки всегда была словом или двумя, самое большее.
Теперь, когда я пытаюсь вытащить ячейку, которая содержит значительно больше текста (~ 800 символов), в качестве вывода отображается ошибка #VALUE!
.
Я преобразовал ошибку для отображения в виде строки в MsgBox, результат: «Ошибка 2015».
Кто-нибудь знает обходной путь для этого? В основном текст в моем диапазоне "D10" слишком длинный, и в результате его не используют, используя приведенный ниже код.
Вот код, который я использую:
Option Explicit
Public MyObj As New FileSystemObject
Function GetValueFromClosedWorkbook(path, file, sheet, ref)
Dim arg As String, xFolder As String
If Right(path, 1) <> "\" Then path = path & "\" ' check whether the file exists
If Dir(path & file) = "" Then
GetValueFromClosedWorkbook = "File not found."
Exit Function
End If
arg = "'" & path & "[" & file & "]" & sheet & "'!" & _
Range(ref).Address(, , xlR1C1) 'create the argument
GetValueFromClosedWorkbook = ExecuteExcel4Macro(arg)
End Function
Sub GetTextsFromClosedWorkbooks()
Dim xPath As Object, xFolder As String
Dim xSheet As String, xName As String, xExplanation As Variant, xTestNo As String, xFile As String, xCompleted As String, z As Long, y As Long, xColumnNo As Long
Dim file As Variant
Sheets("Test").Range("A8:M100").ClearContents
xFolder = "\\generic path" 'path of files
xSheet = "Test1"
xName = "B7"
xExplanation = "D10"
z = 7 'number of rows used as headers
Set xPath = MyObj.GetFolder(xFolder)
For Each file In xPath.Files
z = z + 1
xFile = file.Name
With Sheets("Test")
MsgBox CStr(GetValueFromClosedWorkbook(xFolder, xFile, xSheet, xExplanation)) ''this is what displays Error 2015
.Cells(z, 10) = GetValueFromClosedWorkbook(xFolder, xFile, xSheet, xExplanation)
End With
Next file
z = 7 'number of rows used as headers
End Sub