Я использую Excel 2019. Я подключаюсь к внешнему источнику данных, который является текстовым файлом. Данные сохраняются по дате и импортируются в сводную таблицу, где дата отображается в виде поля столбца. Данные ежедневно добавляются к источнику. Всякий раз, когда добавляются новые данные, я ссылаюсь sh PivotCache
. Моя проблема в том, что после обновления PivotCache я вижу новые даты в раскрывающемся меню сводной таблицы, но новые данные не отображаются в конце сводной таблицы на листе автоматически. Я должен вручную добавить эти даты.
Очевидная проблема заключается в том, что один столбец отображается пустым (дата недоступна). Я прилагаю код для вашей ссылки.
Sub DataConnectionCreation()
ActiveWorkbook.Queries("ImprovedTest").Delete
ActiveWorkbook.Queries.Add Name:="ImprovedTest", Formula:= _
"let" & Chr(13) & "" & Chr(10) & " Source = Csv.Document(File.Contents(""E:\Market\Combine Test\ImprovedTest.txt""),[Delimiter="","", Columns=16, Encoding=1252, QuoteStyle=QuoteStyle.None])," & Chr(13) & "" & Chr(10) & " #""Promoted Headers"" = Table.PromoteHeaders(Source, [PromoteAllScalars=true])," & Chr(13) & "" & Chr(10) & " #""Changed Type"" = Table.TransformColumnTypes(#""Promoted Headers"",{{""SC_CODE"", Int64.Type}, {""SC_NAME"", ty" & _
"pe text}, {""SC_GROUP"", type text}, {""SC_TYPE"", type text}, {""OPEN"", type number}, {""HIGH"", type number}, {""LOW"", type number}, {""CLOSE"", type number}, {""LAST"", type number}, {""PREVCLOSE"", type number}, {""NO_TRADES"", Int64.Type}, {""NO_OF_SHRS"", Int64.Type}, {""NET_TURNOV"", Int64.Type}, {""TDCLOINDI"", type text}, {""Date"", type date}})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & " #""Changed Type"""
myworkbook = ActiveWorkbook.Name
myworksheet = ActiveWorkbook.ActiveSheet.Name
Workbooks(myworkbook).Connections.Add2 "Query - ImprovedTest", _
"Connection to the 'ImprovedTest' query in the workbook.", _
"OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=ImprovedTest;Extended Properties=""""" _
, "SELECT * FROM [ImprovedTest]", 2
If Worksheets(myworksheet).PivotTables.Count > 0 Then
ActiveSheet.PivotTables("PivotTable1").PivotCache.Refresh
With ActiveSheet.PivotTables("PivotTable1").PivotFields("Date")
.Visible = False
End With
With ActiveSheet.PivotTables("PivotTable1").PivotFields("Date")
.ShowAllItems = True ' Displays all the items in pivotfield "Date"
End With
With ActiveSheet.PivotTables("PivotTable1").PivotFields("Date")
.PivotItems("(blank)").Visible = False ' Hides records where "Date" is (Blank)
End With
Else
.....
Endif
End Sub