我有一个带有区域名称的数据透视表。我想使用 (-) 连字符分隔符提取文件名。并选择带有文件名的切片器项目。文件名提取工作正常,但选择不起作用。 这是我的代码:
Option Explicit
Sub Macro2()
'
' Macro2 Macro
'
' Keyboard Shortcut: Ctrl+q
'
Spl
End Sub
Public Function Spl()
Dim wbName As String
Dim fileName As String
'Get the workbook name
wbName = ActiveWorkbook.Name
'Split the workbook name by the dash character
fileName = Split(wbName, "-")(0)
'Call the subroutine for each slicer cache
SelectSlicerItems "Slicer_Area", fileName
End Function
Sub SelectSlicerItems(slicerName As String, fileName As String)
Dim sc As SlicerCache
Dim si As SlicerItem
Dim index As Integer
'Set the slicer cache object
Set sc = ActiveWorkbook.SlicerCaches(slicerName)
'Loop through the slicer items
For index = 1 To sc.SlicerCacheLevels.Count
For Each si In sc.SlicerCacheLevels(index).SlicerItems
If si.Name = fileName Then
si.Selected = True
Else
si.Selected = False
End If
Next si
Next index
End Sub
我想从文件名中分离区域名称,并根据切片器上的区域名称应用过滤器。
答案: 由于数据模型的原因,我们必须以这种方式使用。感谢另一位用户提供的答案链接。
Sub sliceit()
'
' sliceit Macro
'
'
Dim wbName As String
Dim fileName As String
'Get the workbook name
wbName = ActiveWorkbook.Name
'Split the workbook name by the dash character
fileName = Split(wbName, "-")(0)
'Call the subroutine for each slicer cache
ActiveWorkbook.SlicerCaches("Slicer_Area").VisibleSlicerItemsList = Array( _
"[Range].[Area].&[" + fileName + "]")
ActiveWorkbook.SlicerCaches("Slicer_Area1").VisibleSlicerItemsList = Array( _
"[Table2].[Area].&[" + fileName + "]")
Sheets(Array("Summary", "TT Wise ", "DB Wise", "Route Wise ")).Select
Sheets("Summary").Activate
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
End Sub
由于数据模型的原因,我们必须以这种方式使用。感谢Shrotter提供的答案链接 这是完成的代码。
Sub sliceit()
'
' sliceit Macro
'
'
Dim wbName As String
Dim fileName As String
'Get the workbook name
wbName = ActiveWorkbook.Name
'Split the workbook name by the dash character
fileName = Split(wbName, "-")(0)
'Call the subroutine for each slicer cache
ActiveWorkbook.SlicerCaches("Slicer_Area").VisibleSlicerItemsList = Array( _
"[Range].[Area].&[" + fileName + "]")
ActiveWorkbook.SlicerCaches("Slicer_Area1").VisibleSlicerItemsList = Array( _
"[Table2].[Area].&[" + fileName + "]")
Sheets(Array("Summary", "TT Wise ", "DB Wise", "Route Wise ")).Select
Sheets("Summary").Activate
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
End Sub