动态更改数据透视表源数据

时间:2016-06-22 09:42:06

标签: excel vba excel-vba

我在Excel 2010工作簿中有一个数据透视表,源每天都会更改,并且会输出到另一个excel工作簿,其名称格式为:" filename_MM.DD.YYYY.xlsx"

我试过以下

Set ws1 = Worksheets("GRAPH")
Set ws2 = Worksheets("COC")
Set ws3 = Worksheets("LC")
Dim file_path As String
Dim file_name As String
Dim year As String
Dim day As String
Dim month As String
Dim project As String
Dim full_name As String

file_path = Sheets("Master").Range("F" & rep1).Value
file_name = Sheets("Master").Range("G" & rep1).Value
output_sheet = Sheets("Master").Range("L" & rep1).Value
year = Sheets("Master").Range("M" & rep1).Value
month = Format(Sheets("Master").Range("I" & rep1).Value, "00")
day = Format(Sheets("Master").Range("L" & rep1).Value, "00")
project = Sheets("Master").Range("B1").Value
full_name = Sheets("Master").Range("N10").Value

ws1.Activate

ActiveSheet.PivotTables("PivotTable2").ChangePivotCache ActiveWorkbook. _
    PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
    "\\JLR1GBMDCZZZB5J\SebServer\BOM_CAD_SCRIPT\project\2016\06 \22\full_name BOM'!$D:$CC" _
    , Version:=xlPivotTableVersion15)
Next rep1

因此full_name是文件的全名,project是文件夹的名称,依此类推。这些都位于一张名为“Master'并从那里拉入数据。

但是在更改数据源时它不起作用。

来源每天都会改变,并且每天都会在新文件夹中包含新日期,每天一次。

请帮助

谢谢

1 个答案:

答案 0 :(得分:0)

您的代码中包含的SourceData参数是:

SourceData:="\\JLR1GBMDCZZZB5J\SebServer\BOM_CAD_SCRIPT\project\2016\06 \22\full_name BOM'!$D:$CC"

由于这都包含在""中,因此每次运行代码时都会将整个参数作为单个字符串逐字传递而不做任何更改。我可以看到你在这里编写了几个变量的名称,试图在每次运行代码时改变这个值,为了达到这个目的,你需要像这样添加它:

SourceData:="\\Start of the filepath\" & aVariableFromYourMacro & "\end of the filepath"

在您的情况下,您正在寻找以下内容:

SourceData:="\\JLR1GBMDCZZZB5J\SebServer\BOM_CAD_SCRIPT\" & project & "\" & year & "\" & month & "\" & day & "\" & full_name & " BOM'!$D:$CC"

在此示例中,我将变量放在项目,full_name和日期标签位于原始字符串中的位置。您可能需要对其进行修改以使其按您喜欢的方式工作,但是希望通过此示例您可以了解您需要做什么。