gpt4 book ai didi

excel - 如何阻止 Excel 破坏我的 VBA 脚本插入的公式

转载 作者:行者123 更新时间:2023-12-04 21:47:14 24 4
gpt4 key购买 nike

我在 Excel 工作簿中有一个 VBA 脚本,它从特定文件夹中的所有工作簿中收集结果。

Private Sub Workbook_Open()

Dim path As String
Dim fso As Object
Dim folder As Object
Dim file As Object

Dim i As Integer

Dim data As Object

Set data = Worksheets("RawData")
path = data.Range("A1").Value

i = 3

Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder(path)

data.Rows("2:" & data.Rows.Count).ClearContents

For Each file In folder.Files
If Right(UCase(file.name), 5) = ".XLSX" And Left(file.name, 1) <> "~" Then
data.Cells(i, 2) = "='" + path + "\[" + file.name + "]Summary'!A1:J1"
i = i + 1
End If
Next file

End Sub

这个想法是针对每个 .xlsx在给定文件夹中的文件,我添加对该文件中结果范围的引用。例如,如果有一个文件 Test1.xlsx在文件夹 C:\Sheets ,VBA 将以下公式放入包含脚本的工作表的某个行中:
='C:\Sheets\[Test1.xlsx]Summary'!A1:J1

Excel 然后从 Test1 中提取值并将它们放入当前工作簿的 RawData床单。

这一直有效到今天,当我的公式开始以 @ 结束时在 = 之后签名,像这样:
=@'C:\Sheets\[Test1.xlsx]Summary'!A1:J1

这给了我一个 #VALUE? .

Excel 很有帮助地给了我一条消息,指出它刚刚开始插入 @由于一些语法更改而进入公式,但它不会影响计算。我无法让这条消息再次出现,但这就是它的要点。显然它确实会影响计算。如果我手动删除 @从公式来看,它工作正常。

我有 Office 365,我想我最近一定收到了一个更新,添加了这个“功能”,因为所有这些过去都可以正常工作。

如果我修改 VBA 脚本以仅引用单个单元格, @没有被插入。但是对结果使用命名范围(而不是 A1:J1 )仍然存在问题。

有人对解决方法有任何想法吗?

最佳答案

为了避免 @从被插入,使用 .Formula2范围对象的属性。
此更改与 Excel O365 的动态数组功能有关

关于excel - 如何阻止 Excel 破坏我的 VBA 脚本插入的公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62078110/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com