ОБНОВЛЕНИЕ
см. Исходный вопрос ниже.
Теперь код:
Функция Getvalue (CellRange As String) As Variant
Dim path As String
Dim file As String
Dim sheet As String
Dim str As String
set rng = Range(Cell Range)
yr = Format(CStr(Now), "yy")
monthn = Format(CStr(Now), "mmmm")
path = "C:\Folder\Subfolder\"
file = "File-" & monthn & ", FY''" & yr & ".xls"
sheet = "Sheet1"
rng = Range(CellRange)
str = "'" & path & "[" & file & "]" & sheet & "'!" & rng.Address( , ,xlR1C1)
GetValue = Application.ExecuteExcel4Macro (str) Конечная функция
Sub Routine()
Call GetValue("A1")
End Sub
Когда я использую подпрограмму в VBA и go через функцию с F8, с отслеживанием GetValue, значение GetValue возвращает то, что я хочу. Он извлекает данные из закрытой книги. Однако когда я помещаю = GetValue ("A1") в ячейку на моем листе, он возвращает #VALUE!
старый:
У меня есть рабочий лист, который ссылается на данные из одной книги в нескольких столбцах. Моя проблема в том, что книга обновляется и переименовывается каждый месяц (и каждый год). Я мог бы go через и менять ссылку каждый месяц, но я чувствую, что должен быть автоматизированный способ сделать это.
Допустим, имя файла (File-August, FY''20), поэтому каждый месяц / год я бы изменил месяц / год в имени файла.
Я не хочу использовать косвенную функцию, так как я хотел бы иметь возможность держать справочную книгу закрытой.
Но в основном мне нужна альтернатива:
=INDIRECT("'C:\Folder\Subfolder\[File-" & TEXT(TODAY(),"mmmm") & ", FY''" & TEXT(TODAY(),"yy") & ".xls]Sheet1'!" & A1)
(Полный путь: 'C: \ Folder \ Subfolder [File-August, FY''20.xls] Sheet1'! A1)
Месяц, год и ячейка динамически c.
Я новичок в VBA, поэтому я собрал код из исследований, но я знаю, что, вероятно, с ним много чего не так . Я попытался сделать так, чтобы я мог использовать UDF и просто вызывать ячейку, но я не знаю, возможно ли это вообще.
Function Getvalue(CellRange As String) As Variant
Dim path As String
Dim file As String
Dim sheet As String
Dim str As String
Dim rng As Range
yr = Format(CStr(Now), "yy")
monthn = Format(CStr(Now), "mmmm")
path = "C:\Folder\Subfolder\"
file = "File-" & monthn & ", FY''" & yr & ".xls"
sheet = "Sheet1"
rng = Range(CellRange)
str = "'" & path & "[" & file & "]" & sheet & "'!" & rng
Result = ExecuteExcel4Macro(str)
End Function
При вводе возвращается #VALUE
.
спасибо!