これが私の問題です。すべてのコード、すべての変更、すべてのタイプが機能しません。職場で Office 360 (最新) を使用しているため、Excel 2016 と VBA 7.1 です。
私が目指しているのは、シフト終了レポートを自動化することです。プロセスは次のとおりです。
1時間ごとにExcelシート(ログ)にデータを入力します。1 日の終わりの午前 5 時に、そのログを保存して閉じ、データをパワー ピボットにインポートする別の Excel シートを開き、それをピボットテーブル (上司用に印刷するための書式設定) に表示します。フィルタードロップダウンを使用して前の日付のフィルターを作成し、それを印刷します。これは、2 つのピボットテーブルと 1 つのピボットグラフの 3 つのレポートで行います。Power Pivot は、ログ シートからすべてのデータをインポートして、印刷用に再フォーマットします。
ログの自動保存、ログのクローズ、レポート ワークブックのオープン、データの更新、データの印刷、レポートのクローズの自動化プロセスのコードを取得して書き直すことに成功しました (初心者向け)。私が今欠けている唯一の部分は、自動フィルタリングです。
私が試したコードは膨大ですが、最近試したものの例を次に示します (非常に多くのコードを消去して再コピーしました...)
Sub Filter_PivotField()
'Description: Filter a pivot table or slicer for a specific date or period
'Source: excelcampus.com/vba/filter-pivot-table-slicer-recent-date-period
Dim sSheetName As String
Dim sPivotName As String
Dim sFieldName As String
Dim sFilterCrit As String
Dim pi As PivotFields
'Set the variables
sSheetName = "EOS Report"
sPivotName = "PivotTable1"
sFieldName = "Date"
sFilterCrit = "xlDateYesterday"
'sFilterCrit = ThisWorkbook.Worksheets("EOS Report").Range("O1").Value
With ThisWorkbook.Worksheets(sSheetName).PivotTables(sPivotName).PivotFields(sFieldName)
'Clear all filter of the pivotfield
.ClearAllFilters
'Loop through pivot items of the pivot field
'Hide or filter out items that do not match the criteria
For Each pi In .PivotFields
If pi.Name <> sFilterCrit Then
pi.Visible = False
End If
Next pi
End With
End Sub
無駄に....
手動フィルターを実行するマクロを記録すると、次のようになります。
Sub manualfilter()
'
' manualfilter Macro
'
'
ActiveSheet.PivotTables("PivotTable1").PivotFields( _
"[Bi-Hourly Report].[Date].[Date]").VisibleItemsList = Array( _
"[Bi-Hourly Report].[Date].&[2016-09-28T00:00:00]")
End Sub
しかし、記録したばかりの同じマクロを再実行しようとすると失敗します (日付を元に戻した後)。複数選択オプションなどを有効または無効にしました。
言うまでもなく、グラフを自動フィルター処理しようとするのは悪夢です。調べてもあまり出てこない。
フィルター ボタンの画像を次に示します。これは、私が調査したほとんどすべてが、ピボットテーブルを使用したフィルター自体ではなく、テーブルの COLUMN を並べ替えることであるためです。
会社の所有物であるため、実際の Excel スプレッドシートを投稿することはできませんが、必要に応じて、誤ったデータを使用して形式を複製できます。