2016-06-22 2 views
-1

у меня есть сводная таблица в пределах 2010 книги Excel и источник изменяет каждый день и получает outputed на другую книгу Excel с именем форматом, как: «filename_MM.DD.YYYY.xlsx»Динамического изменения исходных данных сводной таблицы

I попытался следующие

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 полное имя файла, проект является имя папки и так далее. Все это находится на листе под названием «Мастер» и извлекает данные оттуда.

Но при смене источника данных это не работает.

Источник будет меняться каждый день и будет в новой папке с новой датой каждый день, один раз в день.

Пожалуйста, помогите

Спасибо

+0

Вы используете Excel 2010, поэтому вам нужно изменить на 'Version: = xlPivotTableVersion12)'. Почему вы не используете параметры, которые вы указали выше, например «file_path», «имя_файла», «год» и т. Д. Является ли источник папки Excel всегда равным сегодняшней дате? –

ответ

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 даты и лейблы в исходной строке. Возможно, вам придется изменить это, чтобы заставить его работать, как вам нравится, но, надеюсь, из этого примера вы можете понять, что вам нужно делать.

+0

благодарит вас за ответ, который сейчас работает но конец refrence, в котором я указываю диапазон ячеек и лист, где я хочу, чтобы сводная таблица выглядела неважно, он попытался поместить это в имя файла. Как мне продолжить: '' \\ JLR1GBMDCZZZB5J \ SebServer \ BOM_CAD_SCRIPT \ "& project &" \ "& year &" \ "& month &" \ "& day &" \ "& file_name & month &". "& day &". "& year &" .xlsx "" BOM "! $ D: $ CC "_' –

+0

удалось исправить импорт, но получить еще одну проблему:' PivotCaches.Create (SourceType: = xlDatabase, SourceData: = _ "\\ JLR1GBMDCZZZB5J \ SebServer \ BOM_CAD_SCRIPT \" & project & "\" & year & "\" & month & "\" & day & "\" & square1 & file_name & month & "." & day & "." & year & ".xlsx" & square2 & "BOM! $ D: $ CF «_» обновляет первую таблицу, но потом она терпит неудачу. В EXCEL закончились источники. Помогите кому-нибудь –

+0

@MahadKhan Кажется, что ваш код работает так, как ожидалось, однако вы столкнулись с новой проблемой. «Excel исчерпал ресурсы» - это ошибка, возникающая, когда приложение исчерпало доступную память и не может продолжить обработку, поскольку для ее работы не осталось «свободного места». Я бы рекомендовал вам создать новый вопрос для этой проблемы, таким образом, вы с большей вероятностью привлечете людей с большим опытом в этой проблеме и, скорее всего, сможете вам помочь. – Carrosive