我需要创建一个可供其他人使用的宏,该宏将每月导入数据,并从两个Excel工作簿中创建两个数据透视表。
我设计的最好的方法是让人员将这两个文件下载到与此启用宏的工作簿相同的文件夹中,并将它们命名为相同的名称,以便查询和提取数据(即Output1和Output2(,然后在运行宏并获得所需表后附加日期并移动到存储文件夹。(如果我误解了查询的工作方式,并且数据需要在相同的位置和名称中保持可用,以便数据透视表继续存在,请告诉我。(通过这种方式,我可以对要从中提取的文件进行硬编码,这对他们来说是最小的工作量。
问题当我记录宏时,它会用为每个查询创建一个静态名称
ActiveWorkbook.Queries.Add
这意味着当我在第二个月运行它时,我会得到一个错误,即查询连接已经存在,并且宏出错。
我找到了这段代码,它应该检查查询是否已经存在,以及是否存在;删除它,但我无法使它工作。
Dim qry As WorkbookQuery
If DoesQueryExist(TS) Then
' Deleting the query
Set qry = ThisWorkbook.Queries(TS)
qry.Delete
End If
我把这个放在我的宏潜艇里
我找不到太多关于";DoesQueryExist">
是否有其他解决方案可以创建具有任意名称的无限制查询,而不必检查和删除?
您需要添加DoesQueryExist
:的代码
Function DoesQueryExist(ByVal queryName As String) As Boolean
' Helper function to check if a query with the given name already exists
Dim qry As WorkbookQuery
If (ThisWorkbook.Queries.Count = 0) Then
DoesQueryExist = False
Exit Function
End If
For Each qry In ThisWorkbook.Queries
If (qry.Name = queryName) Then
DoesQueryExist = True
Exit Function
End If
Next
DoesQueryExist = False
End Function
来源于archive.org。