私はこれについて狂ったように研究しました、そして私は答えがないのではないかと心配しています。しかし、おそらくこのサイトの本当に賢い人々が助けることができます。
一緒に機能する2つのワークブック(Charts.xlsmとData.xlsm)があります。それらは常に同じフォルダにまとめられています。Charts.xlsmには明らかに私のすべてのグラフが含まれていますが、それらはすべて、ソースのData.xlsmのテーブルにリンクされています。また、Charts.xlsmにはチャートに接続されているスライサーがたくさんあり、同じデータソースのチャートに接続されている場合はキャッシュを共有します。2つのワークブックは常に同時に開いているため、データソース参照は次のようになります。'Data.xlsm'!Table1
これらのワークブックを別のコンピューターに配置するまで、これはすべてうまく機能します(これを実行しているので、これを修正する方法を見つける必要があります)。
ワークブックを閉じると、ソースデータ参照がハードドライブ上の特定の場所に変更されます:'C:\ Folder \ Data.xlsm'!Table1
これを手動でローカル参照に戻したい場合は、最初にすべてのスライサーを調べて切断し、テーブルを更新してから、すべてのスライサーを再接続する必要があります。私のクライアントにとって実行可能なソリューションではありません。
Charts.xlsmを開くたびにVBAを使用して参照を変更しましたが、試してみると、ブックでエラーが発生して保存できないか、Excelが完全にクラッシュするかのいずれかが発生しました。
これは、スライサーを切断するために完全に機能するコードですが、「保存」エラーが発生します。
Sub Disconnect_Slicers()
Dim oSliceCache As SlicerCache
Dim PT As PivotTable
Dim i As Long
For Each oSliceCache In ThisWorkbook.SlicerCaches
With ActiveWorkbook.SlicerCaches(oSliceCache.Name).PivotTables
For i = .Count To 1 Step -1
.RemovePivotTable (.Item(i))
Next i
End With
Next oSliceCache
End Sub
だから...私はExcel/VBAの天才たちに、Data.xlsmを探しているときにグラフの相対的な場所を維持できる方法があるかどうかを尋ねています。そうすれば、どのコンピューターでワークブックを開いても、常に積極的にリンクされます。
よろしくお願いします!