Excel скопировать ячейку из закрытой книги.

Я пытаюсь скопировать данные из ячейки закрытой рабочей книги в другую рабочую книгу, не открывая исходную.

код, который я покажу далеко... работает, но мне нужно иметь возможность записывать данные в определенную ячейку открытой рабочей книги.

Private Function GetValue(path, file, sheet, ref)
'   Retrieves a value from a closed workbook
    Dim arg As String
'   Make sure the file exists
    If Right(path, 1) <> "\" Then path = path & "\"
    If Dir(path & file) = "" Then
        GetValue = "File Not Found"
        Exit Function
    End If
'   Create the argument
    arg = "'" & path & "[" & file & "]" & sheet & "'!" & _
      Range(ref).Range("A1").Address(, , xlR1C1)
'   Execute an XLM macro
    GetValue = ExecuteExcel4Macro(arg)
End Function

Sub TestGetValue2()
    p = "F:\excel_Project"
    f = "Book1.xlsx"
    s = "Sheet1"
    a = "A1"
 GetValue(p, f, s, a) = ("A1")

End Sub

2 ответа

Если вы хотите установить значение ячейки в любое GetValue функция возвращает, вы бы сделали следующее

Range("A1") = GetValue(p, f, s, a)

Тем не менее, вам нужно убедиться, что ваш пункт назначения (то есть, куда вы хотите написать GetValue) тот же размер / размер, что и GetValue, Например, если GetValue является ячейкой, то вышеуказанное будет работать, как и ожидалось. Однако если GetValue диапазон ячеек 1x2, и вы используете только приведенный выше код A1 будет заполнено значением (первое значение) из GetValue

Мне нужно было извлечь ячейку из динамического списка закрытого файла, хранящегося в ячейке листа.

Помимо цикла, я пытался использовать формулу для решения моей проблемы

это сработало для меня:

Range("A1").Formula ="='F:\excel_Project\[Book1.xlsb]Sheet1'!$A1"

В случае, если кому-то нужно сделать то же самое со списком файлов...

Range("a" & index).Formula = "='f:\excel_project\[" & myname & ".xlsb]Sheet1'!$A1"
Другие вопросы по тегам