繁体   English   中英

如何使用vba动态更新excel中的工作簿名称?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM