excel - Excel VBA 间接解决方法
问题描述
更新
请参阅下面的原始问题。
代码现在是:
函数 Getvalue(CellRange As String) 作为 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 中使用子程序并使用 F8 执行函数时,正在监视“GetValue”,GetValue 的值返回我想要的值。它从关闭的工作簿中提取数据。但是,当我将 =GetValue("A1") 放入工作表上的单元格时,它会返回 #VALUE!
老的:
我有一个工作表,它在多列中引用来自一个工作簿的数据。我的问题是工作簿每个月(和每年)都会更新和重命名。我可以每个月浏览并更改链接,但我觉得应该有一种自动化的方式来做到这一点。
假设文件名是 (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)
月、年和单元格是动态的。
我是 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
。
谢谢你!
解决方案
推荐阅读
- arrays - 如何快速将 JSON 数据附加到数组中
- c# - System.ComponentModel.Win32Exception:“创建窗口句柄时出错。”
- java - 在不调整大小的情况下正确显示超出屏幕范围的旋转视图
- javascript - 如何更新特定输入字段的值而不是 td 第一个孩子?
- karate - 如何替换空手道中的变量
- python - 虽然循环提前结束?
- vuejs2 - 将 v-model 从父级传递给子级,从子级传递给父级
- vba - VBA - 比较单元格时提高计算效率
- javascript - 为什么即使在执行 clearInterval 之后,在 handlebackpress 方法中执行控制台时,计时器也不会归零还有如何避免丢帧
- javascript - 根据数据对多个 svg 进行条件填充