我必须每周更新一个有大约15个工作簿的数据库。
我想出的解决方案是用pivot表(每个文件有一个枢轴表)来安排数据,然后用VBA代码将数据复制到另一个工作簿(已经完成了)。
问题是,我需要手动更改所有这些文件的数据源,而且打开每个文件也需要时间(10 as )。
最优的是修改每个文件的源代码,查看另一个文件夹(4月1, 2,3,4 // 5月第1,2,3,4周.)
示例文件1
资料来源:4月3日:'C:\ACreative\April\3Coop.XLSSheet1'!$A$6:$BJ$30000
资料来源:4月4日:'C:\ACreative\April\4Coop.XLSSheet1'!$A$6:$BJ$30000
资料来源:5月1日:'C:\ACreative\May\1Coop.XLSSheet1'!$A$6:$BJ$30000
资料来源:5月2日:'C:\ACreative\May\2Coop.XLSSheet1'!$A$6:$BJ$30000
示例文件2
资料来源:4月3日:'C:\ACreative\April\3File2.XLSSheet1'!$A$6:$BJ$30000
资料来源:4月4日:'C:\ACreative\April\4File2.XLSSheet1'!$A$6:$BJ$30000
资料来源:5月1日:'C:\ACreative\May\1File2.XLSSheet1'!$A$6:$BJ$30000
资料来源:5月2日:'C:\ACreative\May\2File2.XLSSheet1'!$A$6:$BJ$30000
我想要的一个解决方案是在一个单元格上写(\path+cell\3 \May\1),并根据那个“值”更新源代码,但是我对另一个值是开放的。
谢谢!
发布于 2016-05-25 16:56:49
宏记录器是你的朋友。
只要您知道不同的DataSources都会滑到问题的枢轴表中,那么就尝试下面的VBA代码片段,在相同的工作簿或其他工作簿范围之间快速切换。
Sub ChangeDataSource()
Dim DataSource As String
Dim Green As Long, Red As Long
Green = -11489280
Red = -16776961
On Error GoTo ErrHandle
DataSource = Range("DataSource").Value
ActiveSheet.PivotTables("PivotTable1").ChangePivotCache ActiveWorkbook. _
PivotCaches.Create(SourceType:=xlDatabase, SourceData:=DataSource, Version _
:=xlPivotTableVersion15)
Range("DataSource").Font.Color = Green
Range("CurrentDataSource").Value = DataSource
Calculate
GoTo Success
ErrHandle:
MsgBox ("DataSource is not valid.")
Range("DataSource").Font.Color = Red
Success:
End Sub注意,我在本地工作簿中使用了一些命名范围来帮助宏。我上传了这里有一些示例文件,而不是上传屏幕截图,这样你就可以在自己周围窥探,而不是试图在论坛上解释静态图片。
希望能帮上忙!
https://stackoverflow.com/questions/37440156
复制相似问题