Ну, в общем, значения в диапазоне сводок, которые вы копируете, вообще не форматируются, это только стиль таблицы сводок, который показывает их форматирование.
Один из способов - скопировать ваши значения и затем преобразовать вашископируйте значения в таблицу и примените то же форматирование, что и в вашей сводной таблице (подробности см. в комментариях):
Sub Macro_copy_paste_pivot()
Dim date_report As String
Dim appExcel As Excel.Application
Dim XLBook As Workbook, XLBookSource As Workbook 'Declare your source workbook too
Set appExcel = CreateObject("Excel.Application")
Set XLBookSource = ThisWorkbook 'Set the source workbook.. alternatively use ActiveWorkbook or specific book
Set XLBook = appExcel.Workbooks.Add
date_report = WorksheetFunction.WorkDay(Date, -1)
date_report = Format(date_report, "yyyy-mm-dd")
' COPY and PASTE the pivot EXO
XLBookSource.Worksheets("Pivot EXO").PivotTables("Pivot EXO").PivotFields( _
"[Context].[AsOfDate].[AsOfDate]").VisibleItemsList = Array( _
"[Context].[AsOfDate].&[" & date_report & "T00:00:00]")
Range("P7:A24").Copy
XLBook.Sheets.Add.Name = "EXO"
With XLBook.Worksheets("EXO")
.Range("P7:A24").PasteSpecial Paste:=xlPasteValues
.ListObjects.Add(xlSrcRange, .Range("P7:A24"), , xlYes).Name = "TableNameWhatever" 'Add a table for this range.. note this adds headers as well, review as needed
.ListObjects("TableNameWhatever").TableStyle = XLBookSource.Worksheets("Pivot EXO").PivotTables("PivotTable1").TableStyle2 'Give the same style as the pivot table
End With
End Sub