[英]Excel VBA using Variable in Workbook Active is not working (getting active workbook name dynamically)
[英]how to dynamically update a workbook name in excel using vba?
我正在尝试动态更新 excel 公式中的工作簿名称,以从不断变化的源文件中获取数据。
到目前为止,我一直在使用间接公式,但现在我有一个巨大的工作簿,其中包含大约 216,000 个要填充的单元格,我认为间接不是最有效的方法。
我想改用 VBA,但我没有这方面的经验。 通过谷歌搜索,我发现了一些东西,但我不确定如何在代码中实现我的特定需求。
到目前为止已经想出了这个:
Sub replace()
Dim cell As Range
cell.Formula = replace(cell.Formula, "OfficeSupplies.csv",
"OfficeSupplies2.csv")
Range("a1:d8").Value
Next
End Sub
但是,当我尝试执行它时,它根本不起作用。
试试这个
Cells.Replace "OfficeSupplies.csv", "OfficeSupplies2.csv", xlPart, , True
编辑以插入指定范围的处理而不是ActiveSheet
使用的范围,并处理与“活动”不同的工作表
要回答这个问题,您可以使用如下代码替换“活动”工作表使用范围:
Sub replace()
ActiveSheet.UsedRange.SpecialCells(xlCellTypeFormulas).Replace(What:="OfficeSupplies.csv", Replacement:="OfficeSupplies2.csv", LookAt:=xlPart)
End Sub
或者您可以明确引用工作表:
Sub replaceInSpecifiedSheet()
Worksheets("MySheetName").UsedRange.SpecialCells(xlCellTypeFormulas).Replace(What:="OfficeSupplies.csv", Replacement:="OfficeSupplies2.csv", LookAt:=xlPart) ' change "MySheetName" to your actual sheet name
End Sub
或者您可能想要更改给定范围内的公式:
Sub replaceInSpecifiedRangeOfSpecifiedSheet()
Worksheets("MySheetName").Range("A5:B8").SpecialCells(xlCellTypeFormulas).Replace(What:="OfficeSupplies.csv", Replacement:="OfficeSupplies2.csv", LookAt:=xlPart) ' change "MySheetName" to your actual sheet name
End Sub
但是在 216k 单元格中更改公式可能是一项非常耗时的活动
您可以考虑相反:更改“不断变化的源文件”的名称
你当然可以在没有 VBA 的情况下做到这一点
如果您“被迫”或更喜欢使用 VBA,那么您可以使用“Name ... As”语句
Sub replace2()
Dim FullNameToChange As String
Dim HardCodedFullName As String
FullNameToChange = "C:\ChangingName.xls"
HardCodedFullName = "C:\HardCodedName.xls"
If Dir(FullNameToChange) <> "" And Dir(HardCodedFullName) = "" Then Name FullNameToChange As HardCodedFullName
End Sub
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.